消息中间件面试专题及答案

java (5.9万) 2020-05-08 15:11:44

activemq 如果数据提交不成功怎么办(消息丢失)

publish(发布)-subscribe(订阅)方式的处理

发布订阅模式的通信方式, 默认情况下只通知一次, 如果接收不到此消息就没有了。 这种场景只适用于对消息送达率要求不高的情况。 如果要求消息必须送达不可以丢失的话, 需要配置持久订阅。 每个订阅端定义一个 id,<property name="clientId" 在订阅是向 activemq 注册。 发布消息<property name="subscriptionDurable" value="true"/>和接收消息时需要配置发送模式为持久化template.setDeliveryMode(DeliveryMode.PERSISTENT);。 此时如果客户端接收不到消息, 消息会持久化到服务端(就是硬盘上), 直到客户端正常接收后为止。

4.2p - p(点对点)方式的处理

点对点模式的话, 如果消息发送不成功此消息默认会保到 activemq 服务端直到有消费者将其消费, 所以此时消息是不会丢失的。

THE END

Leave a Reply