rabbitmq消息保证幂等的消息设计

      在咱们的rabbitmq将消息发送给消费者的过程当中,很容易出现,消息被消费者消费了,可是当消费者在返回ack以后,rabbitmq没有收到的状况,好比消费者恰好消费以后,在返回ack以前挂掉了,或者返回ack以前,网络坏了。那么,下次启动起来或者网络好的状况下,有可能再一次收到该条消息。数据库

       解决方案网络

      因此须要去重,保证接口的幂等,须要给每一次的消息带一个全局惟一ID,这样消费者每次接受到消息了以后,能够判断这个消息是否已经消费过,若是消费过就能够丢掉这个消息不予处理,消费者就能够保证幂等了。ui

建议的信息格式:unix

{"messageId":消息 id,全局唯一,用于去重

"sendAt":消息发布时间,unix 时间戳

"data":{} //要发送的数据 

}

全局惟一id能够根据业务id(固然这个id是数据库主键来确保惟一)来,也能够根据uuid来产生。code

相关文章
相关标签/搜索