消息处理如何善始善终而且避免单点故障?
在做一个基于amq的代理服务程序,主要功能是收听消息中间件的的消息,然后进行处理。
为了避免单点故障,代理服务程序被设计成分布式的,每个消息只能被处理一次,简单做法就是最初源头的消息是队列而不是广播,显然广播不满足只处理一次的需求。
但是基于队列还存在一个问题,因为消息是有批次和顺序的,我希望某个代理服务程序收到某个批次的第一个消息后,则该批次的消息都由它执行(谁先接手,谁就要负责到底,因为多个代理程序都处理一个批次的消息,会产生执行顺序的问题),不能再由其它代理服务程序来处理(貌似又产生单点问题),基于我目前对AMQ的理解,这个似乎不容易做到。
不知道AMQ能不能实现上述的诉求?
或者是否ZOOKEEPER能满足这样的要求?
不知道说明白了没有?多少年没发帖了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
保证消息的顺序消费可以通过指定队列的消费方式为阻塞消费。
避免broker的单点的问题,可以通过桥接方式进行队列转发。