首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >骆驼中消息的自动过期

骆驼中消息的自动过期
EN

Stack Overflow用户
提问于 2012-01-15 16:25:04
回答 5查看 5.5K关注 0票数 6

我有一个实现Camel和ActiveMQ的系统,用于某些服务器之间的通信。我想知道是否有一种方式,自动过期和清除发送到队列的消息后,X段时间。由于原始服务器(填充队列)将不知道是否有人正在接收消息,所以我不希望队列增长,直到它太大以至于某些东西崩溃。奖励业力指向能够帮助和提供java实现此功能的方法的人。

溶液

代码语言:javascript
复制
// expire message after 2 minutes
long ttl = System.currentTimeMillis() + 120000;
// send our info one-way to the group topic
camelTemplate.sendBodyAndHeader("jms:queue:stats", ExchangePattern.InOnly, stats, "JMSExpiration", ttl);
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-01-15 16:32:30

JMS为您提供了一种设置消息过期的机制。请看下面的两个参考

  1. setJMSExpiration(长期过期):每条消息
  2. ActiveMQ:如何设置消息过期:每条命令/每条消息
票数 6
EN

Stack Overflow用户

发布于 2012-01-16 10:50:51

还请注意,客户-代理之间的时钟需要保持同步,以使到期正常工作。如果时钟不同步,那么当在代理上接收到消息时,来自客户端的过期集可能已经过期。或者客户时间在代理之前,所以到期时间比10秒长。

我有点不明白为什么到期日是以客户时间为基础的。因此,AMQ提供了一个插件,通过重新调整时间来解决这个问题,只以经纪人为基础。请参阅https://activemq.apache.org/timestampplugin.html

票数 3
EN

Stack Overflow用户

发布于 2012-01-15 17:02:32

好的,setJMSExpiration(长期过期):

是当你是客户的时候你不能叫的东西。请看我在ActiveMQ论坛上的演讲。

https://apache-qpid-developers.2158895.n2.nabble.com/MRG-Java-JMS-Expiration-td7171854.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8871249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档