有没有一种方法可以在Java中使用多个线程而不消耗多个线程

时间:2019-04-07 23:16:49

标签: java rabbitmq

我正在尝试使多个使用者使用全部全局消息类型的子集,但是每个使用者可以使用任何子集,并且它们可能会重叠。但是,只有重叠的消费者之一才能获得信息。假设它们消耗X,Y类型,消耗YZ。如果发送的是Y类型的消息,则con1或con2(但并不总是相同)可以获取消息,但不能同时获取消息。

我能想到的简单且唯一的解决方案是让每种消息类型都有队列(因此​​只有一个正在监听的使用者会收到消息),并且所有这些都绑定到同一交换(密钥是消息类型,因此对于每个队列)。

在不为每个队列创建单独线程的情况下,如何在Java中做到这一点?我找到了一个示例(https://github.com/php-amqplib/RabbitMqBundle/blob/master/README.md#multiple-consumers),但我根本不了解这种语言,也不知道如何将其转换为Java。 Docs也帮不了我。

现在我只是在多个线程中使用channel.basicConsume(...),但是我不敢相信不可能做得更漂亮(特别是因为队列是基于服务器的,所以对于客户端来说,谁刚获得了消息,那么它们来自一个或多个队列就无关紧要了。

0 个答案:

没有答案