-
多个consumerId订阅同一个topic实现广播消费
- 前言:解耦的过程中遇到两个服务互相调用的业务场景,就想到使用ons消息解耦。然后两个服务使用相同的 consumer id 监听同一个 topic + 不同的 tag,结果出现了消息发送成功,却没有被消费。查询原因是订阅关系不一致。
- 产生原因:订阅关系不一致
在不同的 JVM 中启动了多个 Consumer,并且给相同的 Consumer ID 配置了不同的 Topic,或者是相同的 Topic 但 Tag 不同,最终导致订阅关系不一致,消息不符合预期。 -
解决:使用不同的 consumer id 订阅同一个topic,两个服务都能监听到所有的消息,然后根据tag进行业务处理
多个consumer id.png
-
发送消息的三种方式
- 可靠同步发送
原理:同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发出下一个数据包的通讯方式 - 可靠异步发送
原理:异步发送是指发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。发送方通过回调接口接收服务器响应,并对响应进行处理 - 单向发送
原理:单向发送特点为发送方只负责发送消息,不等待服务器回应且没有回调函数触发,即只发送请求不等待应答。发送消息的过程耗时非常短。
- 可靠同步发送
网友评论