【问题标题】:Set TTL Apache Camel JAva DSL设置 TTL Apache Camel JAva DSL
【发布时间】:2013-03-22 22:18:31
【问题描述】:

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

我有这样的事情:

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

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

【问题讨论】:

  • 定时器组件只是创建了一个事件,它在这个事件的生命周期中没有任何东西,我想你想在其他组件上进行 TTL,你能指定事件将要发生的组件吗?发送通过
  • 我省略了创建消息的逻辑。正在创建的消息是在 Object Message 中发送的自定义、可序列化对象。

标签: apache-camel


【解决方案1】:

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

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

我们使用的是 Apache ActiveMQ 5.7。

【讨论】:

    【解决方案2】:

    我假设 TTL 表示生存时间。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      相关资源
      最近更新 更多