【问题标题】:Mutex is rabbitmq互斥量是rabbitmq
【发布时间】:2012-01-10 18:34:48
【问题描述】:

RabbitMQ 队列中是否可能有互斥锁,即如果客户端正在从队列中读取,则其他客户端不应从队列中读取。那可能吗?

让我解释一下我的场景:

两个应用程序在两个不同的服务器上运行。读取相同的队列。但是,如果一个应用程序正在运行并从队列中读取消息,则另一个应用程序不应该做任何事情。如果主应用程序失败或停止,那么其他应用程序应该 从这个队列开始读取。

这是一种故障转移机制。有没有人尝试过这个。非常感谢任何帮助。

【问题讨论】:

  • 你的方法有点缺陷。您应该在应用程序级别而不是队列级别处理此问题。
  • 我认为如果 rabbitmq 中有方法会很有趣,所以在这里发布,以查看任何 RabbitMq 专家可能会回答这个问题,这可能会在某些方面帮助其他人和我。感谢您的输入@Darth

标签: queue rabbitmq


【解决方案1】:

只要我搜索了,没有找到解决方案...一个简单的解决方案是

  • 创建一个队列,将其称为锁定队列。

  • 只有一条消息使应用程序从队列中读取它。

  • 当应用程序在另一个服务器中启动时,它会等待队列中的消息。所以,如果第一个失败第二个

  • 将读取消息并开始处理它应该从中读取的所需队列中的消息。

队列中的互斥体,就是这样。 注意:此方法仅在锁定队列中只有消息时才有效。确保在您的应用程序中处理它。

【讨论】:

    【解决方案2】:

    本次演讲明确解释了为什么这是一个坏主意:

    http://www.youtube.com/watch?v=XiXZOF6dZuE&feature=share&t=29m55s

    从 ~ 29m 55s in

    【讨论】:

    • 当您要链接到其他 StackOverflow 问题以外的其他内容时,请在您的回答中包含足够的信息,以便将来链接断开时仍然有用。
    猜你喜欢
    • 2011-01-06
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2011-09-06
    • 2022-01-14
    • 2011-04-20
    相关资源
    最近更新 更多