消息队列这种配置用法对吗

来源:7-3 RabbitMQ的基本使用(下)

慕粉1503299742

2018-06-07

看了教程中几种消息队列和 交换机 以及绑定,但在应用中,实际应该这么做吗,外面看了很多教程 几乎都是这么写的,但我总感觉不对,在代码中通过注解写死了绑定什么的,以后要修改不还是要改动代码么

消息处理分3块 ,发送者,接受者,和 中间绑定的分发关系

我感觉应该是,在代码中,一个发送源就唯一对应一个交换机,而一个接受者就唯一对应的一个队列。应用中就这么写死。至于消息如何分发是在后台通过 交换机和队列直接绑定关系来实现的,这样当需要修改的时候就不需要改动代码了。直接后台配置下参数和绑定即可。当然都通过后台修改对于用户可能不友好,所以 通过编程更好的通过代码来实现这些配置。用于定制配置功能。

我觉得关于mq的培训应该 首先帮学生理解队列概念,然后 通过后台如何管理队列交换机的参数 以及他们绑定关系,然后 再通过代码管理这些参数和绑定关系。

而现在这种 在注解上写死的绑定关系其实没什么用 ,甚至有害的

我个人的一点想法,仅供参考

写回答

1回答

廖师兄

2018-06-11

同学你好,非常感谢你把问题写得这么仔细。

首先帮学生理解队列概念,然后 通过后台如何管理队列交换机的参数

因为是SpringCloud教程,重点在应用上,所以对于mq,redis这些中间件的概念是不会多讲的,默认认为学生已经懂了。当然,如果不了解,可以先去学习相关的基础知识哦。


关于是否应该在代码写上绑定,我说下我公司遇到的情况吧。

曾经遇到过,应用上线后mq忘记配置,导致程序出错。另一个原因,服务部署到一个环境,mq全部需要重新配置。后来全部改成绑定的方式。

你说的,如果不写绑定关系,可以灵活配置,不用修改代码。事实上是比较困难的,假如exchange或者queue名字变了,要考虑旧的消息如何消费掉,平滑过渡,兼容。


最后说一下结论,我是不强求写死绑定的,如果能维护好绑定关系,不出错,都是可以的。


0
3
慕粉1503299742
非常感谢!
2018-07-04
共3条回复

SpringCloud Finchley(M2+RELEASE+SR2)微服务实战

SpringCloud组件实现微服务,【已升级Finchley.Release】

5668 学习 · 2489 问题

查看课程