消息队列和应用程序结构
Message queues and application structure
我已经阅读了文档并且我很确定我理解基于 AMQP 的消息队列中存在的不同组件的概念。但是,我很难将其映射到实际的面向服务的实现。有人可以给出一种 "textbook" 两个服务通过路径通信的例子吗:
Producer -> Exchange -> Binding -> Queue -> Consumer
具体来说,我很好奇何时重用队列或声明新队列。 "hello world" 大多数系统中使用的教科书命名约定,如交易所名称等,这太棒了,因为这让我很慌乱!
队列是等待完成的工作桶。如果您只有 1 个工作单元要完成,那么您只需要 1 个队列。
一个交换器上有多个队列的原因是你需要对相同的数据做不同的工作。例如:假设您收到一条传入消息并且您想要:
- 将数据写入数据库
- 发送电子邮件
您可以通过创建具有 2 个队列的单个 FANOUT 交换来实现此目的。然后,您有 2 个工作桶,可以由两个不同的消费者完成。将它们分开的好处是:
- 每个队列可以有N个消费者
- 每个队列都有一个更小、更集中的作业
还有很多方法可以使用 rabbit。希望这对您有所帮助。
查看 RabbitMQ 入门指南。
我已经阅读了文档并且我很确定我理解基于 AMQP 的消息队列中存在的不同组件的概念。但是,我很难将其映射到实际的面向服务的实现。有人可以给出一种 "textbook" 两个服务通过路径通信的例子吗:
Producer -> Exchange -> Binding -> Queue -> Consumer
具体来说,我很好奇何时重用队列或声明新队列。 "hello world" 大多数系统中使用的教科书命名约定,如交易所名称等,这太棒了,因为这让我很慌乱!
队列是等待完成的工作桶。如果您只有 1 个工作单元要完成,那么您只需要 1 个队列。
一个交换器上有多个队列的原因是你需要对相同的数据做不同的工作。例如:假设您收到一条传入消息并且您想要:
- 将数据写入数据库
- 发送电子邮件
您可以通过创建具有 2 个队列的单个 FANOUT 交换来实现此目的。然后,您有 2 个工作桶,可以由两个不同的消费者完成。将它们分开的好处是:
- 每个队列可以有N个消费者
- 每个队列都有一个更小、更集中的作业
还有很多方法可以使用 rabbit。希望这对您有所帮助。
查看 RabbitMQ 入门指南。