RabbitMQ消息中间件技术精讲12 高级篇五 return消息机制
Return消息机制:
Return Listener的使用是用于处理一些不可路由的消息
我们的消息生产者,通过指定的路由(Exchange)和Routingkey,把消息送达到某一个队列中去,然后我们的消费者监听队列,进行消费处理操作。
但是,在某些场景或情况下,如果我们在发送消息的时候,当前的exchange不能在或者是指定的routingkey路由不到,这种情况下,如果我们需要监听这种不可达的消息,就可以使用return listener了。
使用:
在基础API中有一个关键的配置项:
Mandatory:如果设置为ture,则监听器会接收到路由不可达的消息,然后进行后续处理,如将不可达消息记录日志或者给开发人员发送警报有点等等;如果未false,那么broker端自动删除该消息。
流程图:
生产端代码:
在生产端添加returnListener监听
发送消息:
在发送消息的时候第三个参数,设置为true标识接收returnListener的设置为false当交换机或者routingkey路由不到后,会自动抛弃消息的。
发送测试:
发送正确的消息,查看消费者端:
正常消费。
发送错误的routingkey,设置mandatory为false。查看生成端和消费端:
生产者代码修改:
生成者:
消费者:
我们发现,生产者正常发送消息,但是消费者接收不到消息。因为routing key是错误的,所以消费者接收不到。在页面管控台查看,也没有消息。所以MQ已经将错误的消息抛弃了。
下面我们将mandatory为true,还是发送错误的routingkey。
修改生产者代码:
我们启动消费者和生产者之后,在生产者的控制台打印如下:
我们可以看到返回code时312,返回消息时:no_route等等其他消息。
说明已经达到了我们预期结果。
本文总结:
相关代码已发布在git上,欢迎大家下载查看
下节预告:
在下节课中,我们将讲解消费端自定义监听器
git地址,访问原文:http://kaigejava.com/article/detail/520
或者关注凯哥公众号:凯哥Java(kaigejava)获取
网友评论