RabbitMq против голодания - PullRequest
0 голосов
/ 03 мая 2018

Проблема, которую нужно решить: Предотвратите клиента от голодающих клиентов.

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

enter image description here

Проблема этой стратегии заключается в том, что появляется новый клиент . Я могу лениво создать очередь и привязать ее к обмену msg.in в Publisher . Но как мне заставить Consumer использовать из этой новой customer.xxx очереди?

Это почти шаблон Topics , но не совсем, так как мне нужен буфер для каждого клиента. Также это не может быть решено с помощью Priority , что приведет к нарушению порядка сообщений для каждого клиента. Есть ли способ потребления на основе шаблона? Как есть для привязки, например. customer.*.

Опрос API управления является опцией, но будет задерживать обработку первого сообщения нового клиента до тех пор, пока не будет опрошен Потребитель . Наличие отдельного канала pub / sub для метаданных типа new customer.003, на который Consumer может воздействовать, уменьшит задержку (и позволит избежать опроса API), но сделает Издатель более сложный.

У меня такое чувство, что есть хорошее решение, но я пока не смог его найти. Благодарю за отзыв!

...