JMS队列有两个使用者,同步和异步Java应用程序进程等待响应。1)同步应用程序发送请求,并将根据JMS相关ID等待响应60秒。2)异步线程将不断侦听同一队列。
在此场景中,当在60秒内在队列上接收到响应时,我期望负载分布在同步和异步应用程序上。然而,由于一些未知的原因,几乎所有的响应消息都被同步进程消耗掉了。而且,只有在某些情况下,消息是异步处理的。
有没有什么因素会导致只有同步应用程序才能挑选几乎所有的消息?
发布于 2019-04-05 15:28:53
通常不能保证负载是均匀分布的,特别是在同步还是异步的情况下。消费者。同步消费者将不得不在异步时轮询、等待、轮询、等待。消费者可能在一个单独的线程中等待套接字,直到消息到达,然后调用您的回调。所以异步。消费者永远是第一位的。
您是否有机会切换到主题并丢弃您不想要的消息?或者更改同步。消费者将是异步的?另一种选择是在同步消费者面前构建一个小的“asnyc”网关:一个小应用程序进行异步消费,然后将收到的每个消息复制到第二个同步队列中。消费者拿起它。根据你的JMS提供商的不同,它可能已经支持这种类型的'JMS桥‘--你在用什么?
https://stackoverflow.com/questions/55527613
复制相似问题