我们正在使用RabbitMQ死信队列在特定时间从队列中获取消息。但是,有时在长时间延迟后收到消息。我们无法找到这个的根本原因。一旦计时器到期,应立即收到消息。
以下是示例代码
using (var channel = _connection.CreateModel())
{
var queueArgs = new Dictionary<string, object> {
{ "x-dead-letter-exchange", workExchangeName}
};
channel.ExchangeDeclare(retryExchangeName, "direct", true, false, null);
channel.QueueDeclare(retryQueueName, true, false, false, queueArgs);
channel.QueueBind(retryQueueName, retryExchangeName, routingKey, null);
var body = Utility.SerializeSoapObject(message);
var messageBytes = Encoding.UTF8.GetBytes(body);
IBasicProperties properties = channel.CreateBasicProperties();
properties.Expiration = timeout; -- Time-out in milliseconds
channel.BasicPublish(retryExchangeName, routingKey, properties, messageBytes);
}