0
我正在尝试创建一个微服务来监听redis pubsub频道并将一些事件存入数据库。来自redis pubsub的微服务handeling事件
在我的测试案例中,我旋转了2个我的微服务实例,都听同一个频道。
我现在面临的事情是,每个事件接收到两个实例同时更新数据库,我想知道是否有办法来阻止此操作?
喜欢每个事件一个实例将被选为执行更新?
我正在尝试创建一个微服务来监听redis pubsub频道并将一些事件存入数据库。来自redis pubsub的微服务handeling事件
在我的测试案例中,我旋转了2个我的微服务实例,都听同一个频道。
我现在面临的事情是,每个事件接收到两个实例同时更新数据库,我想知道是否有办法来阻止此操作?
喜欢每个事件一个实例将被选为执行更新?
有两种消息系统:pub-sub
和queue
。对于pub-sub
系统,每个客户端处理所有事件,而对于queue
系统,每个事件仅由一个客户端处理。看起来你需要的是一个queue
,而不是pub-sub
。
可以使用Redis的LIST
实现一个简单的消息queue
:
// producers push events into a queue
RPUSH que event1
RPUSH que event2
// push other events...
// consumers pop events from the queue
BLPOP que timeout
注意:这是不是一个完美的解决方案,它有一些可靠的问题。但是,有一些基于Redis的开源解决方案,您不需要重新发明轮子。