Esempio n. 1
0
            public override void HandleBasicDeliver(
                string consumerTag,
                ulong deliveryTag,
                bool redelivered,
                string exchange,
                string routingKey,
                IBasicProperties properties,
                byte[] body)
            {
                var activityId = Encoding.Default.GetString((byte[])properties.Headers["ActivityId"]);

                if (activityId != string.Empty)
                {
                    if (_messageId.Equals(new Guid(activityId)))
                    {
                        Message = new TestRabbitMessage
                        {
                            Headers = properties.Headers,
                            Payload = body
                        };

                        _channel.BasicAck(deliveryTag, false);
                        _waitGate.Set();
                        return;
                    }
                }

                _channel.BasicReject(deliveryTag, true);
            }
Esempio n. 2
0
        public bool FindMessage(Guid messageId, out TestRabbitMessage message, int timeoutMilliseconds = 10000)
        {
            var factory = CreateConnectionFactory();

            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    var waitGate = new ManualResetEvent(false);

                    var consumer = new SpecificMessageRabbitConsumer(channel, waitGate, messageId);
                    channel.BasicConsume(QueueName, false, consumer);

                    // block here until we either find the message or timeout looking for it...
                    waitGate.WaitOne(timeoutMilliseconds);
                    message = consumer.Message;
                }
            }

            return(message != null);
        }