0

使用 Java DSL 时如何设置消息的 TTL?

我有这样的事情:

...
from ("timer:something?delay=3000&period=15000")
   ...
   .to("{{some.property}}")
   .end()
...

我想设置一个时间来处理正在发送的消息。

4

2 回答 2

2

我最终设置了正在创建的消息的 JMSExpiration 标头字段,类似于以下内容

.setHeader("JMSExpiration", constant(System.currentTimeMillis() + 1000))

我们使用的是 Apache ActiveMQ 5.7。

于 2013-03-22T14:18:31.723 回答
1

我假设 TTL 意味着生存时间。

在 Camel 中,这是特定于组件的处理方式。一些组件支持这一点,而另一些则不支持。

你应该检查你使用的组件的文档,它支持什么。

如果您使用 JMS 组件,则它具有 timeToLive 选项,如下所述:http ://camel.apache.org/jms

请注意“客户端和服务器时钟可能不同步”的问题。Camel JMS 页面上有一些详细信息。一些消息代理有同步时钟的方法,例如 Apache ActiveMQ 及其时间戳插件:http ://activemq.apache.org/timestampplugin.html

于 2013-03-20T14:08:32.990 回答