распределение нагрузки между различными экземплярами провайдера jms - PullRequest
0 голосов
/ 13 апреля 2011

Producers <-> Consumer

В приведенном выше сценарии, скажем, 'N' количество производителей, пытающихся поместить много сообщений в наши (Consumer's) очереди JMS.Мой вопрос заключается в том, как распределение нагрузки работает в средах JMS, особенно с очередями.

Я думаю, что JNDI обеспечивает достаточную косвенность в этом случае, поэтому все клиенты просто ищут какую-то фабрику очередей и соединений на основе JNDI.И любой вид loadDistributor мог бы находиться между потребителем и производителем, чтобы принимать входящие сообщения.

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

Каков рекомендуемый подход для такого рода 'среда с высокой нагрузкой?

1 Ответ

1 голос
/ 13 апреля 2011

Очередь является «последовательной» по своей природе, так что каждое сообщение в ней будет доставлено одному получателю.Так, если у вас есть, например, 2 MBD, прослушивающих очередь, каждый из них будет по очереди принимать сообщение, а затем получать следующее.

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

Возможно, я не совсем понимаю, на что вы обращаете внимание, но из первых рук видно, что вам нужен один JMS-провайдер («концентратор обмена сообщениями»), который предоставляет одну очередь с несколькими MDB (которые могут жить наразные хосты) будут выбирать сообщения от.

...