Использование RabbitMQ (или pub / sub) для переменных - PullRequest
0 голосов
/ 29 августа 2018

У меня есть событие (скажем, активность), которое может быть активным или нет в данный момент времени. Я ищу способ использовать RabbitMQ, чтобы выяснить, является ли событие активным или нет. Я знаю, что сценарий использования RabbitMQ - это pub / sub. Как я могу использовать RabbitMQ, чтобы иметь возможность сказать, является ли событие в данный момент активным или нет. Больше похоже на переменную, которая обновляется в режиме реального времени. Я знаю, что могу достичь этого, используя базу данных Firebase; но есть ли способ сделать это с помощью RabbitMQ? Если не RabbitMQ, есть ли другие предложения? Я не могу использовать MySQL и т. Д., Потому что это не будет в режиме реального времени.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

RabbitMQ - брокер сообщений, он не подходит для представления состояния в распределенных системах.

Для этой цели я бы лучше порекомендовал любое решение для хранения, которое предоставляет транзакции (SQL или NoSQL), поскольку вы действительно хотите убедиться, что данные заданы атомарно.

Решения, такие как Redis, MongoDB, PostgreSQL, обеспечивают то, что вам нужно. Облачные провайдеры в настоящее время предлагают решения, подобные управляемым услугам.

Если задержка при доступе к состоянию критически важна для вашего приложения (если это то, что вы имеете в виду под «реальным временем»), то вам нужно будет тщательно рассмотреть вашу архитектуру. Поскольку состояние будет храниться в удаленном месте (будь то RabbitMQ, Redis или что-то еще), задержка сети и ее (не) надежность будут наиболее важным фактором.

0 голосов
/ 30 августа 2018

Единственный способ сделать это с помощью RabbitMQ - хотя это и странно - использовать в качестве записей очереди с истекающим сроком действия / автоопределением.

Вы можете назначить очередь с параметром expires, означающим, что она удаляется через x миллисекунд неиспользования. Тогда вы можете просто проверить, существует ли очередь. Если оно существует, событие активно, если не существует, событие не активно.

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

Надеюсь, ответ имеет смысл.

...