2015-01-08 2 views
2

Say мы имеем производитель в А и центрах обработки данных в ActiveMQ брокер и потребитель в B. центров обработки данныхActiveMQ магазина и вперед через сеть связи высокой латентности

Отправка настойчивых, не Асинхры сообщений брокера понесут туда и обратно время сетевой связи между центрами данных.

Если локальный брокер установлен в датацентре A и сконфигурирован для хранения и пересылки на B, производитель не будет более дросселироваться медленной ссылкой.

Можно ли ожидать улучшения сквозной пропускной способности из-за сети брокеров? Можно ли управлять режимом подтверждения от брокера B до брокера A независимо от режима ack клиента для брокера B?

ответ

1

Сеть брокеров не будет увеличивать пропускную способность, теоретически. Если вы отправляете постоянные сообщения, брокер для брокера всегда будет синхронизацией. Вы, производитель, будете вести себя менее slugish, хотя, всегда имея высокоскоростное брокерское соединение с местным брокером. Это может быть приятной особенностью, если у вашего продюсера есть HTTP-запрос, ожидающий отправки сообщения в очередь до того, как ответ будет отправлен обратно. Однако сообщения не будут отправляться в конечный пункт назначения быстрее.

Если вы используете непостоянные сообщения, пропускная способность будет значительно увеличиваться. Вы также можете настроить брокера на брокер, чтобы он был асинхронным. Однако вам нужно иметь дело с сценарием потери сообщения. В некоторых сценариях это может обрабатываться логикой уровня приложения, но в других сценариях это невозможно, или слишком много усилий.

0

Да, вы можете контролировать, выполняются ли синхронно или асинхронно по каждой ссылке через опцию jms.useAsyncSend=true URI (см. http://activemq.apache.org/async-sends.html), но вы уверены, что хотите, чтобы они отличались друг от друга по разным путям? Если вы используете асинхронные отправки по одной ссылке, но не другие, вы по-прежнему рискуете потерять сообщения, если что-то пойдет не так.

Так что это неприемлемо, и ваш местный брокер просто перемещает узкое место из одного процесса в другой (в этом случае лучше всего отправлять сообщения транзакционно, поскольку эти отправки могут быть асинхронными), или это приемлемо (в в этом случае просто установите этот параметр URI для вашего продюсера и не беспокоитесь с местным брокером). Единственное, что я вижу, что местный брокер будет покупать вас в последнем случае, это то, что он позволит вам установить useAsyncSend=true один раз и применить его ко всем клиентам, что может стоить усилий в зависимости от вашей ситуации.