Я использую php redis pubsub. Я заметил, что если подписчик не запущен и мы публикуем событие на канал, то это событие будет отброшено.
Поэтому по этой причине, прежде чем публиковать что-либо на канале, я хочу проверить, работает подписчик или нет?
Любой способ определить состояние или другой способ, чтобы мое опубликованное событие не пропало.
заранее спасибо
Вы не можете сказать, слушает ли ваш подписчик или нет, это по замыслу:
Увидеть http://redis.io/topics/pubsub
[…] отправители (издатели) не запрограммированы отправлять свои сообщения
конкретные получатели (подписчики). Скорее, опубликованные сообщения
характеризуется в каналы, без знания чего (если есть)
подписчики могут быть.
Это не относится только к Redis, но является фундаментальным принципом любой реализации Pub / Sub.
Вы, вероятно, спрашиваете, как надежно доставлять вам сообщения, но опять же, Redis не имеет встроенных функций для этого:
http://redis.io/topics/notifications
Потому что Redis Pub / Sub это огонь и забыть в настоящее время нет возможности
используйте эту функцию, если ваше приложение требует надежного уведомления
события, то есть, если ваш клиент Pub / Sub отключается и повторно подключается
позже все события были доставлены в то время, когда клиент был
отключены потеряны.
Возможно, вы захотите реализовать свой собственный механизм поверх существующих функций. Например, вы можете LPUSH новые сообщения в список на стороне PUB, и RPOP их на стороне клиента и использовать уведомления о пространстве клавиш знать, когда это сделать. При таком подходе вы не потеряете ни одного сообщения, даже если ни один клиент не слушает.
Других решений пока нет …