2016-07-23 3 views
0

Привет, я действительно новичок в RabbitMQ. Я хочу реализовать шаблон RPC, но с несколькими клиентами и одним сервером. Может ли кто-нибудь рекомендовать ответный способ реализации этого. Меня немного беспокоит код, который я реализую одним клиентом, и один сервер вводит проблемы с блокировкой, в идеале я бы хотел, чтобы клиент получил ответ довольно быстро. Любые рекомендации или подходы приветствуются. Приветствия.RabbitMQ RPC несколько отправителей один приемник

+0

Могу ли я спросить, какую деловую проблему вам нужно решить? –

ответ

0

Прежде всего, чтобы получить терминологию прямо:

  • в RMQ контексте RMQ является брокером (сервер), чьи клиенты являются производителями и потребителями.
  • в контексте RPC (и в примере на the tutorial) у нас есть клиент (ы) RPC и RPC-сервер (ы). Поэтому, когда мы «сопоставляем» это с контекстом RMQ, мы говорим, что клиент RPC на самом деле является как производителем RMQ, так и потребителем RMQ (поскольку он отправляет запрос и получает ответ), и что RPC-сервер является как потребителем RMQ, так и производителем RMQ (потому что он ждет для запросов и затем отправляет ответ)

Теперь, если вы реализуете его так же, как это делается в учебнике (вышеупомянутая ссылка), у вас не будет никаких проблем. Вы должны просто запустить больше серверов RPC, чтобы больше запросов обрабатывалось параллельно.

+0

ОК, чтобы ответить на вопрос Алексий. Деловая проблема заключается в том, что у нас есть веб-сайт, который должен общаться с довольно старым программным обеспечением бухгалтерского учета, API которого больше ориентирован на настольные приложения, имеющие длительные соединения по сети. Поставщик не поддерживает и намекает на проблемы с потоками в нашем сценарии. Поэтому наш следующий подход заключается в том, чтобы веб-приложение отправляло сообщения в RabbitMQ и постоянно подключалось консольное приложение к учетному приложению, которое слушает очередь, и если процесс не слишком длинный, можно уведомить пользователя веб-приложения о том, что транзакция была обработана/поставлена ​​в очередь – user1102550

+0

Итак, чтобы вернуться к cantSleep из учебника (я использовал другой). С точки зрения производительности/разумной архитектуры. Это нормально, если клиент RPC создает временную очередь для веб-приложения для каждого вызова и перенаправляет его обратно. Я не на своем компьютере в данный момент, поэтому я не могу запустить этот учебник. Но, глядя на него, он создает одну очередь. Просто немного беспокоило, что одна очередь может создать узкое место. Я видел несколько примеров, которые создают временную очередь, которая длится всю транзакцию. Это более масштабируемое направление. – user1102550

Смежные вопросы