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 CaptureDTO Popup(string userId) { var sysUser = _sysUserRepository.GetById(userId.ToInt()); if (sysUser.IsNotNull() && !sysUser.SysChannels.IsNullOrEmpty()) { var sb = new StringBuilder(); sysUser.SysChannels.ToList().ForEach(t => sb.Append($"or channel='{t.Name}' ")); var selector = sb.ToString().TrimStart('o', 'r').TrimEnd(' '); var rtnJson = string.Empty; IConnectionFactory factory = new ConnectionFactory(ConfigPara.MQIdaddress); //Create the connection using (Apache.NMS.IConnection connection = factory.CreateConnection()) { try { connection.ClientId = "SKCustome" + userId; connection.Start(); //Create the Session using (ISession session = connection.CreateSession()) { IMessageConsumer consumer = session.CreateDurableConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("MQMessage"), sysUser.Name, selector, false); var i = 10; while (i > 0) { ITextMessage msg = (ITextMessage)consumer.Receive(new TimeSpan(1000)); if (msg != null) { rtnJson = msg.Text; } i--; } consumer.Close(); } } catch { } finally { connection.Stop(); connection.Close(); } } var capture = rtnJson.ToObject <Capture>(); if (capture.IsNotNull()) { if (capture.CreateTime.AddMinutes(2) > DateTime.Now) { return(capture.ConvertoDto <Capture, CaptureDTO>()); } } } return(default(CaptureDTO)); }
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 Run() { logger.Info("注册监听MQ事件"); Task.Factory.StartNew(() => { try { //Create the Connection factory IConnectionFactory factory = new ConnectionFactory(ConfigPara.MQIdaddress); //Create the connection using (Apache.NMS.IConnection connection = factory.CreateConnection()) { connection.ClientId = "MQtesting listener"; connection.Start(); //Create the Session using (ISession session = connection.CreateSession()) { IMessageConsumer consumer = session.CreateDurableConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQTopic("MQMessage"), "webapi listener", null, false); while (true) { ITextMessage msg = (ITextMessage)consumer.Receive(new TimeSpan(10000)); if (msg != null) { logger.Info(msg.Text); if (Clients != null) { Clients.All.broadcastMessage(msg.Text); } } Thread.Sleep(2000); } } } } catch (System.Exception e) { logger.Info(e.Message); } }); logger.Info("监听完成"); }
public override void Listen() { string queueName = "TextQueue"; string brokerUri = $"activemq:tcp://localhost:61616"; // Default port NMSConnectionFactory factory = new NMSConnectionFactory(brokerUri); using (Apache.NMS.IConnection connection = factory.CreateConnection()) { connection.Start(); using (ISession session = connection.CreateSession(AcknowledgementMode.IndividualAcknowledge)) using (IDestination dest = session.GetQueue(queueName)) using (IMessageConsumer consumer = session.CreateConsumer(dest)) { IMessage msg = consumer.Receive(); try { if ((msg is ITextMessage) == false) { throw new Exception("Unexpected message type: " + msg.GetType().Name); } ITextMessage txtMsg = msg as ITextMessage; string jsonMessage = txtMsg.Text; var messageContext = DesypherMessageType(jsonMessage); Interpret(messageContext); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { msg.Acknowledge(); } } } }
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(); } }
private void OpenConnection(Apache.NMS.IConnection connection, Queue queue) { if (queue != null && !queue.RedeliveryPolicy.UseAMQScheduler) { connection.RedeliveryPolicy = new Apache.NMS.Policies.RedeliveryPolicy { BackOffMultiplier = queue.RedeliveryPolicy.BackOffMultiplier, InitialRedeliveryDelay = queue.RedeliveryPolicy.InitialRedeliveryDelay, MaximumRedeliveries = queue.RedeliveryPolicy.MaximumRedeliveries, UseExponentialBackOff = queue.RedeliveryPolicy.UseExponentialBackOff, CollisionAvoidancePercent = queue.RedeliveryPolicy.CollisionAvoidancePercent, UseCollisionAvoidance = queue.RedeliveryPolicy.UseCollisionAvoidance }; } else { connection.RedeliveryPolicy = new Apache.NMS.Policies.RedeliveryPolicy { MaximumRedeliveries = 0 }; } connection.Start(); }