Пример #1
0
        private void AddReceivedEvent(IModel channel, EventingBasicConsumer consumer)
        {
            consumer.Received += (model, eventArguments) =>
            {
                var body = eventArguments.Body;

                _messageProcessingService.Process(body);

                channel.BasicAck(deliveryTag: eventArguments.DeliveryTag, multiple: false);
            };
        }
Пример #2
0
        public Task StartAsync(CancellationToken cancellationToken)
        {
            var consumer = new EventingBasicConsumer(_channel);

            consumer.Received += (ch, ea) => _messageProcessingService.Process(ea.Body);

            var queueName    = _configuration.GetValue <string>("queueName");
            var exchangeName = _configuration.GetValue <string>("exchangeName");

            _channel.BasicConsume(queueName, true, consumer);

            var props = _channel.CreateBasicProperties();


            var keyboardInput = Console.ReadLine();

            while (keyboardInput != "quit")
            {
                var message = new MessageIn();
                message.Message   = keyboardInput;
                message.Type      = "publish";
                message.Nickname  = MyName;
                message.Timestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

                var serializedMessage = JsonSerializer.Serialize(message, JsonOptions);
                var messageBodyBytes  = System.Text.Encoding.UTF8.GetBytes(serializedMessage);

                _channel.BasicPublish(exchangeName,
                                      "", props,
                                      messageBodyBytes);

                keyboardInput = Console.ReadLine();
            }

            return(Task.CompletedTask);
        }