1、什么是消息中间件:客户端与服务器端进行异步通讯。
2、消息中间件的通讯方式:点对点 、发布订阅
3、如果生产者发送几万个消息,消费者会宕机吗?
答:不会,消息会存放在消息队列中,等待消费者消费完后消息会从消息队列中删除。
4、jms保证消息可靠:
(1)activeMQ
①自动签收--自动签收的缺点是不太安全,如果在获取消息后抛出了异常的情况下,消息有可能会没有消费成功。
②事务消息--生产者完成消息发送后,必须提交事务,消息才会发送到MQ中。消费者在消费消息成功后,必须提交事务后消息才会从MQ中删除。
③手动签收--消费者消费消息成功后必须手动签收,消息才会从MQ中删除。
activeMQ:如果消费出现异常,默认有自动尝试功能 ;
(1)、如果MQ消费出现异常时,需要重新发布代码的时候,就不需要采用自动尝试功能,可使用try{}catch 捕获异常写入日志记录,进行人工补偿。使用定时job健康检查脏数据。
5.activeMQ幂等性问题
MQ幂等性问题是在网络延时,启用重试机制,导致消息重复消费。
解决方法:
采用全局唯一性id。判断id是否已被消费过,如果已消费则设置为签收。