RabbitMQ延迟消息插件不起作用

时间:2019-07-17 12:52:33

标签: c# rabbitmq

我正在运行RabbitMQ服务器(v3.6.2)。已安装

rabbitmq-plugins enable rabbitmq_delayed_message_exchange

创建了此交流: enter image description here

并以这种方式向delay交换处插入一条消息:

public void Send(string data)
{
    var properties = Channel.CreateBasicProperties();
    properties.Headers = new Dictionary<string, object>();
    properties.Headers.Add("x-delay", 7000);
    Channel.BasicPublish("delay", "", properties, Encoding.UTF8.GetBytes(data));
}

消息似乎正在离开交易所(delay),但从未到达我的队列(IDG)。

为什么?

2 个答案:

答案 0 :(得分:1)

你的交流方式很糟糕。 Exchange 必须是 "x-delayed-message" 类型,并通过属性 "x-delayed-type" 将参数中的 exahnge 类型设置为 "header “.

Cannot declare a delayed message exchange with 3.8.1

我在 C# 中使用这种类型的交换:

 var exchangeArgumets = new Dictionary<string, object>
 {
       { "x-delayed-type", "header" }
 };
 channel.ExchangeDeclare(exchange: "MyExchangeName", type: "x-delayed-message", durable: true, arguments: exchangeArgumets);

答案 1 :(得分:0)

感谢@luke Bakken,重新安装了最新版本(3.7.16)的Rabbitmq-server解决了该问题,现在可以正常工作!