消息队列和应用程序结构

时间:2015-02-27 18:50:29

标签: service rabbitmq message-queue soa amqp

我已经阅读了文档,并且我非常确定我理解基于AMQP的消息队列中存在的不同组件的概念。但是,我很难将其映射到实际的面向服务的实现。有人会给出一种"教科书"通过该途径进行沟通的两种服务的例子:

Producer -> Exchange -> Binding -> Queue -> Consumer

具体来说,我很好奇何时重用队列或声明一个新队列。 "你好世界"在大多数系统中使用的教科书命名约定,如交换名称等等都会很棒,因为这让我非常慌张!

1 个答案:

答案 0 :(得分:1)

队列是等待完成的工作桶。如果您只需要完成1个工作单元,那么您只需要1个队列。

在交换机上拥有多个队列的原因是您需要对相同的数据执行不同的工作。例如:假设您收到传入消息,并且您想:

  1. 将数据写入数据库
  2. 发送电子邮件
  3. 您可以通过创建一个包含2个队列的单个FANOUT交换来实现此目的。然后,您有两个工作桶,可以由两个不同的消费者完成。分离这些的好处是:

    1. 每个队列可以有N个消费者
    2. 每个队列都有一个更小,更集中的工作
    3. 你可以用更多的方法使用兔子。希望这很有用。

      查看RabbitMQ入门指南。

      http://www.rabbitmq.com/getstarted.html