TimeToLive对Camel响应消息

时间:2014-10-03 20:31:44

标签: jms apache-camel

当使用InOut范例向JMS端点发送请求/响应消息时,Camel JMS documentation描述了如何在请求消息上设置消息过期,但它没有描述响应消息是否会消费者发送请求消息时设置超时(JMS到期)。该文档确实描述了replyToDeliveryPersistent URI选项,消费者可以设置该选项以指定它发送的响应消息应该是非持久的,但是我没有看到任何可以指定响应消息是否具有截止日期的内容集。

是否有某种方法可以确保响应消息将过期(因此它们可以自动从代理中删除)如果它们在一段时间内未被消耗(例如因为请求的生产者在读取之前被杀死了)响应其最终请求),没有实现自定义ActiveMQ使用者并失去使用Camel的好处?我控制着生产者和消费者,所以改变可以发生在他们需要做的任何一方(并且我意识到消费者端是可能需要完成的地方);这里唯一的标准是Camel必须仍然是处理消息并用回复消息进行响应的方法,因为必须手动实现它比使用持久的回复消息更糟糕。

1 个答案:

答案 0 :(得分:4)

在邮件上设置过期时间(JMSExpiration标头)的唯一方法是从其生产点(即由生产者)。

在您的情况下,您的请求的使用者应使用JMS组件的URI选项JMSExpiration明确地设置timeToLive日期 1 ,并且无法从请求方设置此选项。


1) JMS规范指出,JMS客户端应该指定生存时间,而不是直接设置JMSExpiration。然后将标题计算为生存时间和当前GMT值的总和。