public override void StartListening() { _rabbitConnection = _configuration.RabbitMqClusterMembers?.Count > 0 ? _configuration.ConnectionFactory.CreateConnection(_configuration.RabbitMqClusterMembers) : _configuration.ConnectionFactory.CreateConnection(); _publishModel = _rabbitConnection.CreateModel(); _receiveModel = _rabbitConnection.CreateModel(); _receiveModel.ExchangeDeclare(_configuration.ExchangeName, ExchangeType.Fanout, true); var queue = _configuration.QueueName == null ? _receiveModel.QueueDeclare() : _receiveModel.QueueDeclare(_configuration.QueueName, true, false, false, new Dictionary <string, object>()); _receiveModel.QueueBind(queue.QueueName, _configuration.ExchangeName, ""); var consumer = new EventingBasicConsumer(_receiveModel); consumer.Received += (sender, args) => { var message = new RabbitMqMessageWrapper { Bytes = args.Body, Id = Convert.ToUInt64(Encoding.UTF8.GetString((byte[])args.BasicProperties.Headers[MessageIdHeader])) }; OnMessage(message); }; _receiveModel.BasicConsume(queue.QueueName, true, consumer); }
public override void Send(RabbitMqMessageWrapper message) { var mongoRabbitMessage = new MongoRabbitMessage() { Id = GetNewMessageId(), Content = message.Bytes }; var rabbitMessage = new Message <MongoRabbitMessage>(mongoRabbitMessage); _bus.Publish(_receiveExchange, String.Empty, false, false, rabbitMessage); }
public override void Send(RabbitMqMessageWrapper message) { var properties = new BasicProperties { Headers = new Dictionary <string, object> { { MessageIdHeader, GetNewMessageId().ToString() } } }; _publishModel.BasicPublish(Configuration.ExchangeName, string.Empty, properties, message.Bytes); }
public override void StartListening() { _receiveExchange = _bus.ExchangeDeclare(Configuration.ExchangeName, ExchangeType.Fanout); _queue = Configuration.QueueName == null ? _bus.QueueDeclare() : _bus.QueueDeclare(Configuration.QueueName); _bus.Bind(_receiveExchange, _queue, "#"); _bus.Consume <MongoRabbitMessage>(_queue, (message, info) => { var wrapperMsg = new RabbitMqMessageWrapper() { Id = message.Body.Id, Bytes = message.Body.Content }; return(Task.Factory.StartNew(() => OnMessage(wrapperMsg))); }); }