java懒洋洋,消息队列

如何设计一个MQ消息队列?

java懒洋洋,消息队列


1.先上图,明确一个消息发送和消费的流程2.消息消息首先需要定义消息协议,比如ActiveMQ,Stomp,XMPP等3.消息协议定义好了,明确消息队列需要满足什么场景是否需要保证消息可靠性,如果需要就要做存储的高可用;是否需要支持同步和异步消息;是否需要保证消息的顺序;是否需要支持延时消息具体可以参照很多开源实现的特性,比如RocketMQ就是高可靠的,Kafka就是高吞吐量的,但是不是高可靠的 。
如何使用消息队列解决分布式事务?
java懒洋洋,消息队列


【java懒洋洋,消息队列】有两种方案 。方案一 本地消息事务表生产方需要增加一张事务消息表,具体步骤可以这样实现:1.生产方执行业务逻辑并在消息表中插入一条事务记录,这两个操作是在一个本地事务中的2.启动一个后台线程定时轮询消息表,把消息发送给消息队列3.直到发送成功,删除消息表中的记录 。方案二 需要消息队列支持,业务方提供回查接口1.生产方发送prepared消息给消息队列2.在本地事务中业务逻辑3.根据执行结果,确认或者取消prepared消息4.消息队列会确保一定会确认或取消prelared消息的,消息队列会不断询问生产方执行结果,这个就需要生产方提供一个类似的回调函数 。

    推荐阅读