jms - Camel 响应消息上的 TimeToLive

标签 jms apache-camel

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

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

最佳答案

在消息上设置过期时间(JMSExpiration header )的唯一方法是从其生产点(即由生产者)。

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


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

关于jms - Camel 响应消息上的 TimeToLive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26186374/

相关文章:

exception - Camel 嵌套选择和异常(exception)

java - 使用域在 Camel 上创建路由

multithreading - 在 grails 中创建临时队列,创建大量临时队列

Java:用Java实现的Apache Qpid

java - 使用 JMSTemplate 查找 JMS 队列大小

java - 使用 Camel 聚合相同 header 的消息

java - DefaultMessageListenerContainer 不会停止

jms - Websphere 6.1 到 7.0 缺少 JmqiObject 和 JmsQueue

rest - header 中的 Camel REST 路径参数 - 安全问题?

spring - Camel 兼容性问题