如何在php redis pubsub中的PUBLISHING事件之前知道SUBSCRIBER是否正在运行


How to know SUBSCRIBER is running or not befor PUBLISHING event in php redis pubsub?

我使用的是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,然后使用密钥空间通知来确定何时执行。使用这种方法,即使没有客户端在侦听,也不会丢失任何消息。