zhoudqCN
2011-01-07 17:06 阅读 445
已采纳

JMS ActiveMQ 消息丢失

对于单点故障情况断线期间所有消息自动丢弃
请教一下各位大虾是如何解决类似问题的

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    zhanjia 二进制之路 2011-01-07 17:26

    消息发送端设置为:PERSISTENT
    PERSISTENT(持久化)的消息在JMS服务器中持久化。

    JMSDeliveryMode
    NON_PERSISTENT 非持久化 表示消息发往JMS消息服务器之后,保存在内存中,不做持久化;
    PERSISTENT 持久化 消息发往JMS消息服务器之后,持久化数据。以保证消息服务器拓机造成的消息丢失

    点赞 评论 复制链接分享
  • beneo beneo 2011-01-07 21:16

    [quote]对于单点故障情况断线期间所有消息自动丢弃
    请教一下各位大虾是如何解决类似问题的[/quote]

    你的说法太宽泛了。

    jms有三部分组成。生产者,中间件(broker),消费者

    你可以在broker加大消息的存储,或者持久化存储。如楼上说的一样。

    在生产者和消费者这部分,可以设置Session.DUPS_OK_ACKNOWLEDGE。这样做能够保证正确性,但是会牺牲网速和效率。此外,你还可以开启事物。

    这2个参数都在创建session的时候建立,如下

    [code="java"]Session session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);[/code]

    点赞 评论 复制链接分享

相关推荐