Mah*_*ahn 13 publish-subscribe redis
如果订阅的客户端和发布消息的服务器都保留了连接,那么即使在客户端和/或服务器受到巨大压力的情况下,Redis仍保证始终将发布的消息最终传递给订阅的客户端吗?或者我应该计划Redis可能会在事情变得"热"的时候偶尔丢弃消息?
Did*_*zia 15
Redis绝对不会为发布和订阅流量提供任何保证交付.此机制仅基于套接字和事件循环,不涉及任何队列(即使在内存中).如果订阅者在发布时没有收听,则该订阅者将丢失该事件.
可以在Redis之上实现一些有保证的传递机制,但不能使用发布 - 订阅API.Redis中的列表数据类型可以用作队列,也可以用作更高级的排队系统的基础,但它不提供多播功能(因此不提供发布和订阅).
AFAIK,没有明显的方法可以与Redis同时轻松实现发布 - 订阅和保证交付.
Redis不使用其Pub/Sub机制提供有保证的传递.此外,如果订户没有主动收听频道,则它将不会接收已发布的消息.
我之前写了一篇详细的文章,描述了如何结合使用Redis列表BLPOP来实现可靠的多播发布/订阅交付:
http://blog.radiant3.ca/2013/01/03/reliable-delivery-message-queues-with-redis/
为了记录,这是高级策略:
BLPOP操作),处理消息并转到下一条消息.我也已经开源的这些原则的Java实现:https: //github.com/davidmarquis/redisq
这些原则已用于从单个Redis实例和消费者应用程序的两个实例每秒处理大约1,000条消息,每个实例消耗5个线程的消息.
| 归档时间: |
|
| 查看次数: |
11522 次 |
| 最近记录: |