使用Java DSL时如何设置消息的TTL?
我有这样的事情:
...
from ("timer:something?delay=3000&period=15000")
...
.to("{{some.property}}")
.end()
...
我想设定一个时间来发送消息。
答案 0 :(得分:1)
我认为TTL意味着生存时间。
在Camel中,这是特定于组件的处理方式。有些组件支持这一点,而其他组件则不支持。
您应该查看您使用的组件的文档,它支持的内容。
如果您使用JMS组件,则它具有记录的timeToLive选项:http://camel.apache.org/jms
请注意“客户端和服务器时钟可能不同步”的问题。 Camel JMS页面上有一些细节。一些消息代理有办法同步时钟,例如Apache ActiveMQ及其时间戳插件:http://activemq.apache.org/timestampplugin.html
答案 1 :(得分:0)
我最终设置了正在创建的消息的JMSExpiration头字段,类似于以下
.setHeader("JMSExpiration", constant(System.currentTimeMillis() + 1000))
我们正在使用Apache ActiveMQ 5.7。