我创建了一个客户机和一个服务器。我如何使用RabbitMq直接回复队列扩展?
客户机代码AMQPExchange * ex = amqp.createExchange("");
AMQPQueue * ReplyToQueue = amqp.createQueue("amq.rabbitmq.reply-to");
ReplyToQueue->Consume(AMQP_NOACK);
在上面的代码中,Consume给出以下异常
server error 404, message 'NOT_FOUND - no queue 'amq.rabbitmq.reply-to' in vhost '/'' class=60 method=20
我遵循直接回复rabbitmq
我想说你错过了打电话
ReplyToQueue.Declare()
声明队列
编辑
我添加了oldsound
评论,因为我的答案不正确:
不能用amq来命名队列。前缀,但回复是规则的例外,参见:rabbitmq.com/direct-reply-to.html和https://github.com/rabbitmq/rabbitmq-server/blob/master/src/rabbit_channel.erl#L1264
"不需要先声明这个"队列",尽管客户端如果它愿意,可以这样做。"这是回复队列文档-
根据注释,错误信息NOT_FOUND - no queue 'amq.rabbitmq.reply-to' in vhost '/'
很可能意味着你正在连接的RabbitMQ实例太旧,不支持"直接回复"扩展。它是在RabbitMQ 3.4.0中引入的;