向jms主题的新使用者发送上次发送的消息
是否可以将主题配置为仅存储最后一条消息的副本,并将其发送到新连接,而不知道客户端标识符或其他信息 更新: 从Shashi提供的信息中,我找到了这两个页面,在这两个页面中,他们描述了一个类似于我的用例(应用于股票价格),使用和。我怎么没有得到想要的行为。我现在做的是: 在activemq中包含向jms主题的新使用者发送上次发送的消息,jms,activemq,Jms,Activemq,是否可以将主题配置为仅存储最后一条消息的副本,并将其发送到新连接,而不知道客户端标识符或其他信息 更新: 从Shashi提供的信息中,我找到了这两个页面,在这两个页面中,他们描述了一个类似于我的用例(应用于股票价格),使用和。我怎么没有得到想要的行为。我现在做的是: 在activemq中包含topic=“>” 添加到用于连接brocker的URL(使用activemq cpp)consumer.retroactive=true 设置消费者具有耐久性。(但我强烈认为这不是我想要的,因为我只需要
topic=“>”
添加到用于连接brocker的URL(使用activemq cpp)consumer.retroactive=true
设置消费者具有耐久性。(但我强烈认为这不是我想要的,因为我只需要最后一个,但没有它,我在第二次启动消费者时没有收到任何消息)
保留发布的功能。使用此功能,主题上最后发布的消息将由消息传递提供商保留,并传递给在给定主题上发布消息后进入的新消费者
保留发布
可能由其本机接口中的活动MQ支持。本节讨论的是仅适用于OpenWire的consumer.retroactive
发布者将在发布前通过设置消息的属性来通知消息传递提供程序保留发布。下面是如何使用WebSphereMQ完成的
// set as a retained publication
msg.setIntProperty(JmsConstants.JMS_IBM_RETAIN, JmsConstants.RETAIN_PUBLICATION)
您想要的是拥有并设置主题上的lastImageSubscriptionRecoveryPolicy
。Shashi正确地指出,以下用于将消费者设置为追溯的语法仅适用于Openwire
topic = new ActiveMQTopic("TEST.Topic?consumer.retroactive=true");
在您的情况下,您可以使用alwaysRetroactive=“true”
在代理配置中将所有使用者配置为可追溯。我测试过,这甚至适用于AMQP协议(库qpid jms客户端),我怀疑它适用于所有协议
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic="FOO.>" alwaysRetroactive="true">
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>
配置示例取自
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry topic="FOO.>" alwaysRetroactive="true">
<subscriptionRecoveryPolicy>
<lastImageSubscriptionRecoveryPolicy />
</subscriptionRecoveryPolicy>
</policyEntry>