我在计算来自响应队列的响应时遇到问题。我的意思是,每天我们运行一次从db收集一些数据并将它们发送到队列的作业。当我们收到所有响应时,我们应该关闭连接。问题是我们如何检查所有响应是否到达?由于并发问题,将其保留在全局变量中是有风险的。任何的想法 ?我是JMS的新手,所以也许解决方案显而易见但我没有看到它。
答案 0 :(得分:0)
我不知道你的筹码是什么,或者你可能用什么工具来完成这个但是我已经考虑到了这一点,这可能会帮助你(希望如此)。
ConcurrentHashMap
)现在您有两个应该执行的所有作业列表以及您从中获得响应的作业。有多种方法可以实现这一目标。如果您查找Java Concurrency
,您会发现大量的教程和文档。我喜欢使用CyclicBarrier and
CountDownLatch`。如果计划使用任何这些方法,请采取额外的预防措施,以防止您的应用程序挂起或更糟,一个肮脏的内存泄漏。
或者,你可以简单地检查你有多少排队请求和响应,如果它们彼此相等,则断开连接。