请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

分布式问题

老师,如果说程序运行在分布式的多台服务器上,形成负载均衡。mq中一条数据出队列,是分到其中一台服务器上的吧,为什么不是每一台服务器都能获得该条数据呢???而redis的订阅功能,比如订阅过期失效的key,是每一台服务器都会收到失效信息的吧,又有什么办法专门只让其中一台服务器收到失效信息呢???

正在回答 回答被采纳积分+3

1回答

若鱼1919 2018-03-17 11:11:10

rabbit也可以把一条消息推送个多个Queue,同一个Queue的消费者有多个,一条消息只会有一个消费者会收到消息,否则不就重复消费了么?redis的发布订阅就相当于是把一个消息推送给多个Queue,可以让不同的服务器订阅不同的失效key

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_红_14 #1
    将代码打包传到服务器时,代码都是相同的。既然服务器的代码都是相同,要怎样做到不同的服务器订阅不同的失效key呢
    回复 有任何疑惑可以回复我~ 2018-03-17 15:34:18
  • 若鱼1919 回复 提问者 qq_红_14 #2
    redis默认只支持发布订阅,要想实现消息队列得自己来实现。实际生产环境中,一般不使用redis做消息队列,而是使用rabbitMQ这种
    回复 有任何疑惑可以回复我~ 2018-03-17 17:22:43
  • 若鱼1919 回复 提问者 qq_红_14 #3
    redis的消息机制很不完善,比如:不支持可靠发布、可靠消费等等,除非手动实现下,否则根本无法作为消息队列在生产环境使用。
    回复 有任何疑惑可以回复我~ 2018-03-17 17:25:07
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信