Beispiel #1
0
 /*
  * Activemq messaging thread
  */
 public void ActiveMQBrokerThreadRun()
 {
     while (true)
     {
         try
         {
             String value = (String)brokerQueue.Dequeue();
             //activemqSender.Send(value);
             logger.Debug("Message is sent with activemq");
             Thread.Sleep(1);
             if (messagingFinished && brokerQueue.Count == 0)
             {
                 activeMQconnection.Close();
                 return;
             }
         }
         catch (System.Exception e)
         {
             //disables broker type messaging
             BROKER = NONE;
             logger.Error(e);
             brokerQueue.Clear();
             activeMQconnection.Close();
             return;
         }
     }
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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();
            }
        }