微服务处理来自redis pubsub的事件

时间:2017-02-07 01:00:07

标签: java redis microservices

我正在尝试创建一个监听redis pubsub通道的微服务,并将一些事件保存到数据库中。

在我的测试案例中,我正在调整我的微服务的两个实例,同时收听同一个频道。

我现在面对的是,对于收到的每个事件,两个实例同时更新数据库,我想知道是否有办法阻止此操作?

对于每个事件,将选择一个实例来执行更新吗?

1 个答案:

答案 0 :(得分:2)

有两种邮件系统:pub-subqueue。对于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

注意:这是 NOT 一个完美的解决方案,它有一些可靠的问题。但是,有一些基于Redis的开源解决方案,你不需要重新发明轮子。