Могут ли клиенты AMQP быть и издателем, и подписчиком? - PullRequest
0 голосов
/ 12 апреля 2011

Я только начинаю исследовать AMQP, и мне интересно, буду ли я использовать его для чего-то, для чего он не предназначен.Вот что-то наподобие того, что я хочу сделать:

ClientA делает свое дело и публикует свое состояние для какого-то обмена (поправьте меня, если я где-то использую неправильные термины).

ClientB подключается к тому же брокеру и «говорит, какие издатели публикуют здесь? Я выбираю вас, clientB. Что происходит?».

ClientA говорит: «Мой foo - это bar, а мой baz - это правда»

ClientB говорит: «OK. Установите для baz значение false»

изменить для менее абстрактногопример "

ClientA говорит / слушает аппаратное устройство, скажем, видеопроектор. Когда ClientB подключается к сети, он хочет найти подключенные клиенты проектора (например, ClientA), а затем узнать состояниепроекторов (лампа включена?), а также, при необходимости, измените статус (выключите лампу). Таким образом, ClientA сохраняет некоторое состояние (лампа выключена) и может отправить его по запросу, а также позвонитьотвечать на команды обмена и преобразовывать их и передавать на проектор (включить лампу).

Ответы [ 2 ]

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

Это возможно, и было бы разумно, если бы в вашем примере различные участники были сетевыми устройствами, потому что AMQP обеспечивал бы слабосвязанный способ обмена сообщениями.

Одна вещь, на которую следует обратить внимание, это последняя абстрактная строкагде клиент B говорит «ОК, установите какой-либо атрибут».Это подозрительно похоже на сценарий, в котором вызовы подпрограмм возвращают какое-то значение, а затем происходит следующий шаг.AMQP, конечно, может имитировать такого рода RPC, но он работает лучше, когда процессы могут отправить сообщение и не должны ждать завершения.

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

AMQP действительно сияет, когда есть будущие возможности, например, в вашем сценарии, если вам нужно было добавить пару тысяч проекторов, 10 000клиентские B и несколько других типов устройств, которые также должны обмениваться статусами.Слабая связь AMQP позволяет легко добавлять другие приложения в брокер, просто объявив новые биржи.

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

Мне трудно следовать вашему примеру, но звучит так, будто вы хотите, чтобы эти типы А и В имели возможность общаться друг с другом. Это правильно?

AMQP лучше подходит для асинхронной передачи сообщений, а для добавления описываемого вами типа двухточечного стиля необходимо настроить очереди запросов и ответов, чтобы клиенты могли отправлять и получать сообщения. Разумеется, клиенты могут публиковать и потреблять сообщения.

...