如何使用rabbit-c客户端消费RabbitMQ默认交换机的队列消息
问题解答
完全可以通过rabbit-c客户端消费default exchange的消息,你遇到的调用失败问题和客户端支持性无关。
错误原因分析
你收到的应答码3对应AMQP协议的NOT_FOUND错误,触发原因是你主动调用了amqp_queue_bind方法尝试手动将队列绑定到default exchange:
- RabbitMQ的default exchange是预定义的内置direct交换机,所有新创建的队列会自动绑定到该交换机,绑定规则为routing key等于队列自身名称
- RabbitMQ官方禁止用户手动对default exchange执行队列绑定/解绑操作,所以你手动调用绑定方法时会直接返回错误
正确操作步骤
你已经提前完成队列创建,不需要额外执行绑定操作,直接按以下流程消费即可:
- 直接调用
amqp_basic_consume方法指定目标队列名称,启动消费者监听即可 - 如果需要往该队列发送消息,调用
amqp_basic_publish时,将exchange参数设置为空字符串""或者amqp_empty_bytes,routing key参数填写目标队列的名称即可正常投递
内容的提问来源于stack exchange,提问作者SaiVikas
相关产品推荐
相关产品推荐

