Ejemplo n.º 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);
        }
Ejemplo n.º 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);
     }
 }
Ejemplo n.º 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);
        }
Ejemplo n.º 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; //处理成功
            }
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 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));
         }
     }
 }
Ejemplo n.º 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));
                }
            }
        }
Ejemplo n.º 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)); //推送消息
         }
     }
 }
        public ProcessStitchAdaptor(CrossStitchCore core, StitchesConfiguration configuration, StitchInstance stitchInstance, IStitchEventObserver observer, ProcessParameters parameters, IModuleLog log)
        {
            Assert.ArgNotNull(core, nameof(core));
            Assert.ArgNotNull(configuration, nameof(configuration));
            Assert.ArgNotNull(stitchInstance, nameof(stitchInstance));
            Assert.ArgNotNull(observer, nameof(observer));
            Assert.ArgNotNull(parameters, nameof(parameters));
            Assert.ArgNotNull(log, nameof(log));

            _core           = core;
            _stitchInstance = stitchInstance;
            _observer       = observer;
            _parameters     = parameters;
            _log            = log;

            _channelFactory    = new CoreMessageChannelFactory(core.NodeId, stitchInstance.Id);
            _serializerFactory = new MessageSerializerFactory();
            _processFactory    = new ProcessFactory(stitchInstance, core, log);
            _stopRequested     = false;
        }
Ejemplo n.º 10
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));
                }
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Receive the message content.
        /// </summary>
        /// <param name="context">The SMTP session context to receive the message within.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>A task which asynchronously performs the operation.</returns>
        Task <IMessage> ReadMessageAsync(SmtpSessionContext context, CancellationToken cancellationToken)
        {
            var serializer = new MessageSerializerFactory().CreateInstance();

            return(serializer.DeserializeAsync(context.Client, cancellationToken));
        }
Ejemplo n.º 12
0
 public static T Deserializer <T>(byte[] bytes) where T : class, new()
 {
     return(MessageSerializerFactory.CreateMessageSerializerInstance().Deserializer <T>(bytes));
 }