public int Run() { ParseArgs(); if (helpNeeded) { DisplayUsage(); return(0); } Mama.logToFile(@"mama.log", MamaLogLevel.MAMA_LOG_LEVEL_NORMAL); bridge = Mama.loadBridge(middlewareName); Mama.open(); MamaQueue defaultQueue = Mama.getDefaultEventQueue(bridge); msg = new MamaMsg(); MamaTimer timer = new MamaTimer(); timer.create(defaultQueue, this, interval, null); queueGroup = new MamaQueueGroup(bridge, 1); MamaTransport transport = new MamaTransport(); transport.create(transportName, bridge); MamaSubscription subscription = null; if (nosub == false) { subscription = new MamaSubscription(); subscription.createBasic(transport, defaultQueue, this, inboundTopic); } publisher = new MamaPublisher(); if (pubCb) { publisher.createWithCallbacks(transport, queueGroup.getNextQueue(), this, null, outboundTopic, null, null); } else { publisher.create(transport, outboundTopic); } Mama.start(bridge); Mama.close(); return(0); }
private void createQueues() { mamaDefaultQueue = Mama.getDefaultEventQueue(mamaBridge); mamaQueueGroup = new MamaQueueGroup(mamaBridge, mamaThreads); if (mamaThreads > 0) { // Has queue monitoring been enabled? if (mamaHighWaterMark > 0 || mamaLowWaterMark > 0) { for (int index = 0; index < mamaThreads; index++) { MamaQueue queue = mamaQueueGroup.getNextQueue(); string queueName = "QUEUE " + index; Console.WriteLine("Setting monitor for " + queueName); queue.setQueueMonitorCallbacks(this, queueName); if (mamaHighWaterMark > 0) { queue.setHighWatermark(mamaHighWaterMark); } if (mamaLowWaterMark > 0) { try { // Not supported on all middlewares. queue.setLowWatermark(mamaLowWaterMark); } catch (Exception e) { Console.WriteLine("Could not set " + queueName + " queue low water mark MamaStatus: " + e); } } } } } }
private static void subscribeToSubjects() { int howMany = 0; queueGroup = new MamaQueueGroup (myBridge, numThreads); /* Subscribe to all symbols parsed from the symbol list */ for (IEnumerator enumerator = subjectList.GetEnumerator(); enumerator.MoveNext();) { string symbol = (string) enumerator.Current; MamaSubscription subscription = new MamaSubscription (); subscription.create ( queueGroup.getNextQueue (), subscriptionCallback, mySource, symbol, null); subscriptions.Add (subscription); if (++howMany % 1000 == 0) { Console.WriteLine ("Subscribed to " + howMany + " symbols."); } } }
public int Run() { ParseArgs(); if (helpNeeded) { DisplayUsage(); return 0; } Mama.logToFile(@"mama.log", MamaLogLevel.MAMA_LOG_LEVEL_NORMAL); bridge = Mama.loadBridge(middlewareName); Mama.open(); MamaQueue defaultQueue = Mama.getDefaultEventQueue(bridge); msg = new MamaMsg(); MamaTimer timer = new MamaTimer(); timer.create(defaultQueue, this, interval, null); queueGroup = new MamaQueueGroup(bridge, 1); MamaTransport transport = new MamaTransport(); transport.create(transportName, bridge); MamaSubscription subscription = null; if (nosub == false) { subscription = new MamaSubscription(); subscription.createBasic(transport, defaultQueue, this, inboundTopic); } publisher = new MamaPublisher(); if (pubCb) { publisher.createWithCallbacks(transport, queueGroup.getNextQueue(), this, null, outboundTopic, null, null); } else { publisher.create(transport, outboundTopic); } Mama.start(bridge); Mama.close(); return 0; }
/// <summary> /// This function will clean up all the objects initialised before Mama.start is called. /// </summary> private void uninitializeMama() { if (m_source != null) { m_source.destroy(); m_source = null; } if (m_dictionary != null) { m_dictionary.Dispose(); m_dictionary = null; } if (m_queueGroup != null) { m_queueGroup.destroyWait(); m_queueGroup = null; } if (m_transport != null) { m_transport.destroy(); m_transport = null; } Mama.close(); }
/// <summary> /// Queues will be created if the user has specified a number of threads to be /// used, otherwise the default queue will be used. /// </summary> private void createQueues() { // Only continue if the number of threads required is greater than 0 if (m_numberThreads > 0) { m_queueGroup = new MamaQueueGroup(m_bridge, m_numberThreads); if ((m_highWaterMark > 0) || (m_lowWaterMark > 0)) { ListenerQueueCallback queueCallback = new ListenerQueueCallback(); // Install the callback on each queue for (int index = 0; index < m_numberThreads; index++) { MamaQueue queue = m_queueGroup.getNextQueue(); string queueName = ("QUEUE " + index); Console.WriteLine("Setting monitor for " + queueName); // Install the callbacks queue.setQueueMonitorCallbacks(queueCallback, queueName); // Set the watermarks at which the callbacks are invoked if(m_highWaterMark > 0) { queue.setHighWatermark(m_highWaterMark); } if(m_lowWaterMark > 0) { // Not supported on all middlewares. queue.setLowWatermark(m_lowWaterMark); } } } } }