为请求响应模型选择RabbitMq Exchange类型

时间:2018-05-09 20:46:44

标签: .net rabbitmq rabbitmq-exchange

我们正在将现有架构迁移到基于队列的架构。我们的系统包含一个连接到300多个KIOSK系统的集中式服务器,其中数据同步完成基于sql的CRUD操作。

我们决定使用标题绑定为集中服务创建交换和队列以及与多个队列(对于每个KIOSK)进行交换。

KIOSK始终启动同步(由于法律问题而限制)。所以我们决定使用请求/响应模型。

问题是,我们是否可以为此请求/响应模型使用基于标头的交换绑定。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你的信息亭会向中央服务器发送一条消息,它需要响应一个标题交换,它将消息路由到专用于该信息亭消息的队列。每个信息亭都会从其自己的专用队列中消费消息。

让我们假设您根据StoreLocationId和KioskId进行绑定。当信息亭将其消息发送到中央服务器时,它确保StoreLocationId和KioskId包含在消息中。中央服务器执行它需要做的事情,并向响应消息添加两个消息头:StoreLocationId和KioskId以及从Kiosk收到的值。发送到该标头交换机的响应现在将正确地路由到所需的信息亭。

我应该注意,您也可以使用主题交换并使用路由键,如LocationId_KioskId。如果您的信息亭队列遵循标准命名约定,则可以使用默认交换,该约定可以从请求消息中包含的数据派生。

从安全的角度来看,默认交换可能是最好的,因为自助服务终端无法设置允许他们使用来自多个其他信息亭的消息的绑定。使用默认交换时,只有一个信息亭会收到响应。