Проблема, которую нужно решить: Предотвратите клиента от голодающих клиентов.
Я планирую, чтобы у каждого клиента была своя очередь, а затем один Потребитель , потребляющий все эти очереди. В моем случае могут быть сотни клиентов, но очереди стоят дешево. При разумном низком числе предварительных выборок поведение посредника по умолчанию ( для случайного выбора очереди для обработки из ) должно дать удовлетворительный результат.
Проблема этой стратегии заключается в том, что появляется новый клиент . Я могу лениво создать очередь и привязать ее к обмену msg.in
в Publisher . Но как мне заставить Consumer использовать из этой новой customer.xxx
очереди?
Это почти шаблон Topics , но не совсем, так как мне нужен буфер для каждого клиента. Также это не может быть решено с помощью Priority , что приведет к нарушению порядка сообщений для каждого клиента. Есть ли способ потребления на основе шаблона? Как есть для привязки, например. customer.*
.
Опрос API управления является опцией, но будет задерживать обработку первого сообщения нового клиента до тех пор, пока не будет опрошен Потребитель . Наличие отдельного канала pub / sub для метаданных типа new customer.003
, на который Consumer может воздействовать, уменьшит задержку (и позволит избежать опроса API), но сделает Издатель более сложный.
У меня такое чувство, что есть хорошее решение, но я пока не смог его найти. Благодарю за отзыв!