MQ ACK 机制实现:
实现方案一:
采用MQ
的ACK
机制实现最大努力通知。
- 发起通知方将通知发送给
MQ
。使用普通消息机制将通知发送给MQ
。
注意:如果消息没有发出去可由接收方主动请求发起通知查询业务执行结果。
- 接受通知方监听
MQ
- 接收通知方接收消息,业务处理完成回应
ACK
- 接收通知方若没有回应
ACK
则MQ
会重复通知
MQ
会按照时间间隔1分钟、5分钟、10分钟、30分钟、1小时、2小时、5小时、10小时的方式,逐步拉大通知间隔。
- 接受通知方可通过消息校对接口来校对消息的一致性
实现方案二:
这个方案也是使用MQ
的ACK
机制,与方案一不同是:应用程序向接收通知方发送通知:
- 发起通知方将通知发给
MQ
。使用可靠消息一致方案中事务消息保证本地事务与消息的原子性,最终将通知先发给MQ
- 通知程序监听
MQ
,接收MQ
消息。
方案一中接收通知方直接监听MQ,方案二中由通知程序监听MQ
。通知程序若没有返回ACK
则MQ
会重复通知。
- 通知程序通过互联网接口协议(
HTTP
、WebService
)调用接收通知方接口,完成通知。
通知程序调用接收通知方案接口成功就表示通知成功,即消费MQ
消息成功,MQ
将不再向通知程序投递通知消息。
- 接收通知方可通过消息校对接口来校对消息的一致性。