一,生产者方面
1,生产者开启mq事务(channel.txSelect)。如果发送不成功则会报错,此时可以通过事务来回滚(channel.txRollback),成功收到消息则事务提交(channel.txCommit)。因为
生产者事务是同步的机制,当事务提交后会阻塞在那儿,当吞吐量上来后这种方式会影响性能。
2,开启生产者确认机制。使用confirm机制,confirm是异步形式。生产者发送消息时会给消息添加一个ia,当生产者成功发送消息到mq时,mq会返回一个ack给生产者,生产者收到ack说明
消息发送成功,可以做后续处理。如果mq没能处理生产者发送的消息则会回掉nack方法,生产者可以在这个方法里面重新发送消息。如果超过一定时间还没有接收到回调消息则生产者可以自行重
发消息。
二,MQ方面
1,mq持久化消息。mq消息默认是存放在内存上面的,要保证消息不丢失则需要持久化到磁盘上,这样即使mq宕机了重启后也可以从磁盘上读取到持久化的消息。那么要做到消息持久化,必须满足
一下三个条件:
1)Exchange持久化。
2)Queue持久化。
3)消息持久化发送,设置deliveryMode=2,代表持久化发送。
2,mq采用HAPROXY集群镜像部署模式。说一下三种模式:
1)单节点模式。非集群部署,当节点挂掉了,可能导致业务瘫痪,只能等待服务器恢复。
2)普通模式。消息只存在于当前节点中,不会同步到其他节点。当前节点