什么是消息一致性
消息发送一致性:是指产生消息的业务动作与消息发送的一致。(也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去,否则就丢消息)
消息发送一致性如何保障?
处理方式一
/** 支付订单处理**/
public void completeOrder() {
// 订单处理(业务操作)
orderBiz.process();
// 发送会记原始凭证消息(发送消息)
sendAccountingVoucherMsg();
}
1、如果业务操作成功,执行消息发送前应用故障,消息发不出去,导致消息丢失(订单系统与会计系统的数据不一致);
2、如果业务操作成功,应用正常,但消息系统故障或网络故障,也会导致消息发不出去(订单系统与会计系统的数据不一致);
处理方式二
支付订单处理**/
public void completeOrder() {
// 发送会记原始凭证消息(发送消息)
sendAccountingVoucherMsg();
// 订单处理(业务操作)
orderBiz.process();
}
1、这种情况下,更不可控,消息发出去了,但业务可能会失败(订单系统与会计系统的数据不一致);