我正在运行RabbitMQ服务器(v3.6.2)。已安装
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
并以这种方式向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
)。
为什么?
答案 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解决了该问题,现在可以正常工作!