Реализация приоритета сообщения в AMQP - PullRequest
0 голосов
/ 08 сентября 2010

Я собираюсь использовать AMQP, чтобы разрешить асинхронно передавать распределенную коллекцию машин в центральное местоположение. Идея состоит в том, чтобы помещать сообщения в очередь и позволить центральному регистрирующему объекту обрабатывать очередь в несвязном порядке; «Процесс» - просто создать или обновить строку в таблице базы данных.

Проблема, которую я ожидаю, заключается в влиянии дрожания сети в процессе очереди сообщений - что произойдет, если update случайно окажется перед insert, потому что время между двумя выдаваемыми сообщениями меньше, чем джиттер сети?

Читая спецификацию AMQP, кажется, что я мог бы просто применить более высокий приоритет к insert s, чтобы они пропускали очередь и обрабатывались первыми. Но, по-видимому, это применимо только в том случае, если в брокере действительно существует очередь, которую нужно пропустить. Есть ли способ наложить на брокера буфер или задержку, чтобы поглотить этот джиттер и позволить установить приоритет перед передачей сообщений потребителю (ям)?

Или я должен идти по маршруту повторного секвенсора , как ActiveMQ предлагает ?

1 Ответ

3 голосов
/ 16 сентября 2010

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

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