示例#1
0
 public void Publish(HdMessage @event)
 {
     using (var channel = _connection.CreateChannel())
     {
         channel.QueueDeclare(_exchange, true, false, false, null);
         var body = Encoding.UTF8.GetBytes(JsonSerializer.Serialize(@event));
         RetryPolicy.ExecuteAndCapture <SocketException, BrokerUnreachableException>(5, TimeSpan.FromSeconds(3),
                                                                                     () =>
         {
             IBasicProperties basicProperties = channel.CreateBasicProperties();
             basicProperties.Persistent       = true;
             channel.BasicPublish(_exchange, @event.Name, true, basicProperties, body);
         });
     }
 }
        public static RabbitMqPayLoad GetRabbitMqMessage(EventMessage eventMessage, RabbitMQ.Client.IBasicProperties basicProperties)
        {
            RabbitMqPayLoad msg = new RabbitMqPayLoad(GetBytes(JsonConvert.SerializeObject(eventMessage)), basicProperties);

            if (eventMessage.EventHeaders != null)
            {
                foreach (KeyValuePair <string, string> item in eventMessage.EventHeaders)
                {
                    msg.BasicProperties.Headers.Add(item.Key, item.Value);
                }
            }

            msg.BasicProperties.CorrelationId = Guid.NewGuid().ToString();

            return(msg);
        }
示例#3
0
 public void HandleBasicDeliver(string consumerTag, ulong deliveryTag, bool redelivered, string exchange, string routingKey,
                                RabbitMQ.Client.IBasicProperties properties, byte[] body)
 {
     _action(deliveryTag, properties, body);
 }