Есть ли способ использовать несколько очередей без нескольких потоков в Java - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь сделать несколько потребителей, которые используют подмножество общих глобальных типов сообщений, но каждый потребитель может взять любое подмножество, и они могут перекрываться.Но при совпадении ТОЛЬКО один из потребителей должен получить сообщение.Скажем, они потребляют X1, X и Y2, и Y2.если сообщение типа Y отправлено, con1 или con2 (но не всегда одно и то же) могут получить сообщение, но не оба.

Простое и единственное решение, которое я могу придумать, - это иметь очередь для каждого типа сообщения (так что только один из прослушивающих потребителей получит сообщение), и все они связаны с одним и тем же обменом (с ключом, являющимся типом сообщения итаким образом, отличается для каждой очереди).

Как можно сделать это в Java без создания отдельного потока для каждой очереди?Я нашел пример (https://github.com/php-amqplib/RabbitMqBundle/blob/master/README.md#multiple-consumers), но я вообще не знаю этот язык и понятия не имею, как перевести его на Java. Документы мне тоже не помогают.

Пока япросто используя channel.basicConsume (...) в нескольких потоках, но я не могу поверить, что это невозможно сделать красивее (особенно потому, что очереди основаны на сервере, поэтому для клиента, который просто получает сообщения, мало что имеет значение, если они приходятиз одной или нескольких очередей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...