首页 > 解决方案 > 运行多个服务时如何只获取一个 Redis 事件?

问题描述

我有一个作为微服务运行的 java 应用程序,它接收在 Redis 中过期的键的事件(Redis 配置为“config set notify-keyspace-events Ex”)。使用 MessageListener 在应用程序中读取这些事件。

我的问题是,当应用程序的多个版本正在运行时,所有实例都会收到 Redis 通知并执行相同的操作。但这不是我的意图,只需执行一项操作。就我而言,在 Redis 中过期的每个键都必须在数据库中记录一次。

有没有办法将 Redis 配置为仅将事件发送到同一微服务的一个实例?或者,Redis 发送的事件可以被微服务的多个实例的多个侦听器读取,然后我可以使用一些智能的东西(也许使用 RabbitMq)来生成只处理一次的消息吗?

标签: javaspringspring-bootredisrabbitmq

解决方案


我认为事件监听器也应该使用另一个消息队列而不是 Redis。


推荐阅读