Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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)));
            });
        }