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