对于单点故障情况断线期间所有消息自动丢弃
请教一下各位大虾是如何解决类似问题的
消息发送端设置为:PERSISTENT
PERSISTENT(持久化)的消息在JMS服务器中持久化。
JMSDeliveryMode
NON_PERSISTENT 非持久化 表示消息发往JMS消息服务器之后,保存在内存中,不做持久化;
PERSISTENT 持久化 消息发往JMS消息服务器之后,持久化数据。以保证消息服务器拓机造成的消息丢失
[quote]对于单点故障情况断线期间所有消息自动丢弃
请教一下各位大虾是如何解决类似问题的[/quote]
你的说法太宽泛了。
jms有三部分组成。生产者,中间件(broker),消费者
你可以在broker加大消息的存储,或者持久化存储。如楼上说的一样。
在生产者和消费者这部分,可以设置Session.DUPS_OK_ACKNOWLEDGE。这样做能够保证正确性,但是会牺牲网速和效率。此外,你还可以开启事物。
这2个参数都在创建session的时候建立,如下
[code="java"]Session session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);[/code]