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); }
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); }