Хорошо, я выложу сценарий немного подробнее и выделю основной блокатор, насколько я могу судить.
У меня есть 2 группы сообщений (в действительности масштаб будет намного больше), каждая из которых имеет разные требования регулирования - скажем, я указываю это в заголовке сообщения как flowRate и flowTime.
- Группа 1: FlowRate = 1; flowTime = 60 (1 в минуту)
- Группа 2: FlowRate = 1; flowTime = 1
(1 в секунду)
Я реализую Процессор согласно Клаусу , который проверяет поля заголовка и использует их в качестве входных данных для задержки.
Я добавляю 20000 сообщений из группы 1 и 20000 из группы 2
Поскольку дроссель находится на стороне потребителя, задержка, активируемая группой 1, заставит его замедляться, быстро заполняя свой входной буфер, и сообщения группы 2 будут зависать ... даже если я использую несколько очередей согласно Джеймс .
Я понимаю, что могу сгруппировать сообщение, используя заголовок JMXGroupID, и реализовать несколько потребителей, но не думаю, что это будет соответствовать требованиям для размещения n групп.
Что мне было интересно, так это то, есть ли способ сделать брокера, а не регулирование на стороне потребителя, или какое-либо другое решение, посредством которого потребитель может регулировать скорость, не блокируя в конечном итоге.
Надеюсь, я все объяснил четко и спасибо за предложения.