RabbitMQ消息中间件技术精讲12 高级篇五 return消息机制

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)获取

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券