public static void ReceiveMsg() { Apache.NMS.IConnection con = null; try { var factory = new ConnectionFactory(brokerUrl); factory.UserName = "******"; factory.Password = "******"; factory.ClientId = "MsgApp-Receiver1"; factory.PrefetchPolicy = new PrefetchPolicy() { DurableTopicPrefetch = 1, TopicPrefetch = 1 }; var rpolicy = new RedeliveryPolicy(); rpolicy.InitialRedeliveryDelay = 15000; rpolicy.MaximumRedeliveries = 5; rpolicy.UseExponentialBackOff = false; using (con = factory.CreateConnection("admin", "admin")) { con.RedeliveryPolicy = rpolicy; //con.AcknowledgementMode = AcknowledgementMode.ClientAcknowledge; using (var session = con.CreateSession(AcknowledgementMode.ClientAcknowledge)) { var dest = session.GetTopic(topicName); var durableConsumer = session.CreateDurableConsumer(dest, "durable-eol-orderMsgSubscriber1", null, false); con.Start(); durableConsumer.Listener += (msg) => { Console.WriteLine("durable-eol-orderMsgSubscriber-1: " + ((ActiveMQTextMessage)msg).Text); if ((msg as ActiveMQTextMessage).Text.StartsWith("0")) { msg.Acknowledge(); } else { session.Recover(); } }; Console.ReadKey(); durableConsumer.Close(); } } } catch (Exception ex) { string emsg = ex.Message; } finally { con.Dispose(); } }
public void PublishMsgToTopic(string brokerUrl, string topicName) { Apache.NMS.IConnection con = null; ITextMessage msg = null; try { var factory = new ConnectionFactory(brokerUrl); // factory.PrefetchPolicy = new PrefetchPolicy() { DurableTopicPrefetch = 1, TopicPrefetch = 1 }; con = factory.CreateConnection("admin", "admin"); con.ClientId = "OrderMsgProducer-1"; con.RequestTimeout = TimeSpan.FromMinutes(5); con.Start(); using (var session = con.CreateSession(Apache.NMS.AcknowledgementMode.ClientAcknowledge)) { var dest = (IDestination)session.GetTopic(topicName); var prod = session.CreateProducer(dest); prod.DeliveryMode = MsgDeliveryMode.NonPersistent; prod.TimeToLive = TimeSpan.FromMinutes(20); do { Console.WriteLine("Please enter msg"); var textMsg = Console.ReadLine(); msg = prod.CreateTextMessage(textMsg); msg.Properties.SetLong("x-opt-delivery-delay", 10000); prod.Send(msg); msg.ClearBody(); Console.WriteLine("Please press esc key to exit."); } while (Console.ReadKey().Key != ConsoleKey.Escape); prod.Close(); } } catch (Exception ex) { string emsg = ex.Message; } finally { con.Close(); con.Dispose(); } }
public static void ReceiveMsg2() { Apache.NMS.IConnection con = null; try { var factory = new ConnectionFactory(brokerUrl); factory.UserName = "******"; factory.Password = "******"; factory.ClientId = "MsgApp-Receiver2"; // factory.SendTimeout = 300000; //5 mins using (con = factory.CreateConnection()) { using (var session = con.CreateSession(Apache.NMS.AcknowledgementMode.ClientAcknowledge)) { var dest = session.GetTopic(topicName); var durableConsumer = session.CreateDurableConsumer(dest, "durable-eol-orderMsgSubscriber2", null, false); con.Start(); durableConsumer.Listener += (msg) => { Console.WriteLine("durable-eol-orderMsgSubscriber-2: " + ((ITextMessage)msg).Text); msg.Acknowledge(); }; Console.ReadKey(); durableConsumer.Close(); } } } catch (Exception ex) { string emsg = ex.Message; } finally { con.Dispose(); } }