【发布时间】:2012-04-17 07:26:59
【问题描述】:
在我们的应用程序中,我们接收来自 JMS 主题的消息。
- 首先我想知道 JMS 是否遵循 FIFO 策略。如果不是,应用程序如何确定哪条消息是最新消息?
我们使用消息(持久订阅者和 JMS 会话进行事务处理,开销很大),因为消息保留在 JMS 服务器上,直到事务提交/结束。我们指定交易的原因是
我们正在使用缓存(休眠)技术和事务来使用它。因此,我们使用了两个事务,一个是 JMS tx,一个是缓存技术 tx。当我们使用消息并且我们希望全部或不发生任何事情时,直到消息被提交并将确认发送到 JMS。缓存 tx 将首先提交,然后立即 JMS tx 将提交下一个并确认消息,否则,两个 tx 都将回滚并重播消息。我们目前正在重播消息 3 次,如果仍然出现异常,则将消息发送到不可处理队列。
这工作正常,直到大量消息同时到达 JMS 并且需要我们的系统同时处理。
我想知道当你遇到这种情况时你是怎么做的。因为,维护持久订阅和事务会话对 JMS 服务器来说是一个很大的开销,并且会消耗服务器的性能。
【问题讨论】:
标签: hibernate transactions jms spring-jms