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); }
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); } }
/// <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); }
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; //处理成功 } }
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); }
/// <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)); } } }
/// <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)); } } }
/// <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; }
/// <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)); } } }
/// <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)); }
public static T Deserializer <T>(byte[] bytes) where T : class, new() { return(MessageSerializerFactory.CreateMessageSerializerInstance().Deserializer <T>(bytes)); }