示例#1
0
        public void Publish <T>(string channelName, T message) where T : class
        {
            var          producer = _ISession.CreateProducer(new ActiveMQTopic(channelName));
            ITextMessage msg      = producer.CreateTextMessage();

            msg.Text = Encoding.UTF8.GetString(MessageSerializerFactory.CreateMessageSerializerInstance().SerializerBytes(message));
            producer.Send(msg, MsgDeliveryMode.Persistent, MsgPriority.Normal, TimeSpan.MinValue);
        }
示例#2
0
 private static void mqClient_ActionEventMessage(EventMessageResult result)
 {
     if (result.EventMessageBytes.EventMessageMarkcode == MessageTypeConst.ZgUpdatePurchaseStatus)
     {
         var message = MessageSerializerFactory.CreateMessageSerializerInstance().Deserialize <UpdatePurchaseOrderStatusByBillIdMqContract>(result.MessageBytes);
         result.IsOperationOk = true; //处理成功
         Console.WriteLine(message.ModifiedBy);
     }
 }
示例#3
0
        /// <summary>
        /// 生成 EventMessageResult 对象
        /// </summary>
        /// <param name="bytes">流</param>
        /// <returns></returns>
        internal static EventMessageResult BuildEventMessageResult(byte[] bytes)
        {
            var eventMessage = MessageSerializerFactory.CreateMessageSerializerInstance()
                               .Deserialize <EventMessage>(bytes);
            var result = new EventMessageResult()
            {
                MessageBytes      = eventMessage.EventMessageBytes,
                EventMessageBytes = eventMessage
            };

            return(result);
        }
示例#4
0
        private static void mqClient_ActionEventMessage(EventMessageResult result)
        {
            //EventLog.Log("mqClient_ActionEventMessage", "mq");
            if (result.EventMessageBytes.EventMessageMarkcode == MessageType.Markcode)
            {
                //EventLog.Log("mqClient_ActionEventMessage-->markcode", "mq");
                var message =
                    MessageSerializerFactory.CreateMessageSerializerInstance()
                    .Deserialize <MessageInfo>(result.MessageBytes);

                result.IsOperationOk = true; //处理成功
            }
        }
示例#5
0
        public static EventMessage CreageEventMessageInstance <T>(T originObject, string eventMessageMarkcode) where T : class, new()
        {
            var result = new EventMessage
            {
                CreateDateTime       = DateTime.Now,
                EventMessageMarkcode = eventMessageMarkcode
            };

            var bytes = MessageSerializerFactory.CreateMessageSerializerInstance().SerializerBytes <T>(originObject);

            result.EventMessageBytes = bytes;
            return(result);
        }
示例#6
0
 /// <summary>
 /// 触发一个事件并且将事件打包成消息发送到远程队列中
 /// </summary>
 /// <param name="eventMessage">发送的消息实例</param>
 /// <param name="exChange">Exchange名称</param>
 /// <param name="queue">队列名称</param>
 public void TriggerEventMessage(EventMessage eventMessage, string exChange, string queue)
 {
     using (var connection = RabbitMqClientFactory.CreateConnection())
     {
         //Context.SendChannel = RabbitMqClientFactory.CreateModel(connection);
         const byte deliveryMode = 2;
         using (var channel = RabbitMqClientFactory.CreateModel(connection))
         {
             var messageSerializer = MessageSerializerFactory.CreateMessageSerializerInstance();
             var properties        = channel.CreateBasicProperties();
             properties.DeliveryMode = deliveryMode;
             channel.BasicPublish(exChange, queue, properties,
                                  messageSerializer.SerializerBytes(eventMessage));
         }
     }
 }
示例#7
0
        /// <summary>
        /// 出发一个事件且将事件打包成消息发送到远程队列
        /// </summary>
        /// <param name="eventMessage">发送的消息实例。</param>
        /// <param name="queue">队列名称</param>
        /// <param name="exChange">RabbitMq的Exchange名称</param>
        public void TriggerEventMessage(EventMessage.EventMessage eventMessage, string queue, string exChange)
        {
            Context.SendConnection = RabbitMqClientFactory.CreateConnection();//获取连接
            using (Context.SendConnection)
            {
                Context.SendChannel = RabbitMqClientFactory.CreateModel(Context.SendConnection);//获取通道

                const byte deliveryMode = 2;
                using (Context.SendChannel)
                {
                    var messageSerializer = MessageSerializerFactory.CreateMessageSerializerInstance(); //发序列化消息
                    var properties        = Context.SendChannel.CreateBasicProperties();
                    properties.DeliveryMode = deliveryMode;                                             //表示持久化消息
                    //声明队列
                    Context.SendChannel.QueueDeclare(queue, deliveryMode == 2, false, false, null);
                    Context.SendChannel.BasicPublish(exChange, queue, properties, messageSerializer.SerializerBytes(eventMessage));
                }
            }
        }
示例#8
0
 /// <summary>
 /// 触发一个事件且将事件打包成消息发送到远程队列中。
 /// </summary>
 /// <param name="eventMessage">发送的消息实例。</param>
 /// <param name="exChange">RabbitMq的Exchange名称。</param>
 /// <param name="queue">队列名称。</param>
 public void TriggerEventMessage(EventMessage eventMessage, string exChange, string queue)
 {
     Context.SendConnection = this.Context.SendConnection; //获取连接
     if (!Context.SendConnection.IsOpen)
     {
         Context.SendConnection = RabbitMqClientFactory.CreateSendConnection(this.Context.mqConfigDom);
     }
     using (Context.SendConnection)
     {
         Context.SendChannel = RabbitMqClientFactory.CreateModel(Context.SendConnection); //获取通道
         using (Context.SendChannel)
         {
             Context.SendChannel.QueueDeclare(queue: "CALC", durable: false, exclusive: false, autoDelete: false, arguments: null);
             Context.SendChannel.ExchangeDeclare(exChange, "direct", false);
             var messageSerializer = MessageSerializerFactory.CreateMessageSerializerInstance("json");                                                        //反序列化消息
             Context.SendChannel.BasicPublish(exchange: "", routingKey: queue, basicProperties: null, body: messageSerializer.SerializerBytes(eventMessage)); //推送消息
         }
     }
 }
示例#9
0
        /// <summary>
        /// 触发一个事件且将事件打包成消息发送到远程队列中。
        /// </summary>
        /// <param name="eventMessage">发送的消息实例。</param>
        /// <param name="exChange">RabbitMq的Exchange名称。</param>
        /// <param name="queue">队列名称。</param>
        public void TriggerEventMessage(EventMessage eventMessage, string exChange, string queue)
        {
            Context.SendConnection = this.Context.SendConnection; //获取连接

            using (Context.SendConnection)
            {
                Context.SendChannel = RabbitMqClientFactory.CreateModel(Context.SendConnection); //获取通道

                const byte deliveryMode = 2;
                using (Context.SendChannel)
                {
                    var messageSerializer = MessageSerializerFactory.CreateMessageSerializerInstance("json"); //反序列化消息

                    var properties = Context.SendChannel.CreateBasicProperties();
                    properties.DeliveryMode = deliveryMode; //表示持久化消息

                    //推送消息
                    Context.SendChannel.BasicPublish(
                        exChange, queue, properties, messageSerializer.SerializerBytes(eventMessage));
                }
            }
        }
示例#10
0
 public static T Deserializer <T>(byte[] bytes) where T : class, new()
 {
     return(MessageSerializerFactory.CreateMessageSerializerInstance().Deserializer <T>(bytes));
 }