java - 运行多个服务时如何只获取一个 Redis 事件?
问题描述
我有一个作为微服务运行的 java 应用程序,它接收在 Redis 中过期的键的事件(Redis 配置为“config set notify-keyspace-events Ex”)。使用 MessageListener 在应用程序中读取这些事件。
我的问题是,当应用程序的多个版本正在运行时,所有实例都会收到 Redis 通知并执行相同的操作。但这不是我的意图,只需执行一项操作。就我而言,在 Redis 中过期的每个键都必须在数据库中记录一次。
有没有办法将 Redis 配置为仅将事件发送到同一微服务的一个实例?或者,Redis 发送的事件可以被微服务的多个实例的多个侦听器读取,然后我可以使用一些智能的东西(也许使用 RabbitMq)来生成只处理一次的消息吗?
解决方案
我认为事件监听器也应该使用另一个消息队列而不是 Redis。
推荐阅读
- python - 将具有列表的字符串表示形式的数据框转换为具有列表的数据框
- c# - 使用多线程发送多封电子邮件
- python - Xception模型的验证准确性太低,而我自己的模型一切正常
- javascript - Scrollintoview + flexbox + 动态高度
- android - 获取微调器的参考值
- arrays - 单循环排序的复杂性
- python - Pandas shift() 列向下,但用以前的值替换 NaN 条目?
- sql - 旋转计算雪花
- c# - 如何获取有关错误消息的更多信息:“抛出异常:System.Web.Mvc.dll 中的‘System.NullReferenceException’”
- javascript - Puppeteer 多次返回最近的对象