如何解决两个实例轮流从Hazelcast阻塞队列中获取,如何尽可能避免读取重复项
这里有一些背景: 我们有几个服务实例共享一个 Hazelcast 阻塞 quque,该服务主要有两个任务:
我对上述解决方案有几个疑问:
-
如果任何两个实例同时运行调度程序,如何避免向队列添加重复项(例如,如果队列中有“A”、“B”、instanceA会放'A','D',肯定可以过滤掉A,因为它在队列中,所以instanceA会将D放入队列,同时instanceB也放入D,因为它的本地队列当时没有D )
-
如何避免 instanceA 和 instanceB 取重复项(例如,实例 A 取第一项,但队列尚未同步到实例 B,实例 B 是否也会取相同的第一项? ?) 我们可能不需要严格避免重复项,但尽量避免。
通过电话编辑,如有拼写问题,请见谅。也许更好的解决方案是转向 redis 或其他集中方式?
解决方法
我不熟悉 Hazelcast。但我知道 Redis 有解决方案。
- 如何避免队列中出现重复项?
您可以使用Redis Set
来存储不重复的项目,在将项目推送到redis消息队列之前,只需检查Redis Set
中是否存在项目,如果存在,则退出推送操作。>
- 如何避免物品被重复使用?
可以使用Redis List
作为消息队列,通过rpop
原子操作,instanceA和instanceB不能取重复项。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。