我们希望解耦 2 个独立组织之间的系统(例如:一个可能是一组内部应用程序,另一个可能是一组 3rd 方应用程序)。虽然我们可以使用基于 REST 的 API 来做到这一点,但我们希望实现时间解耦、可伸缩性、可靠和持久的通信、工作负载解耦(通过扇出)等。正是出于这些原因,我们希望使用消息公共汽车。
现在可以使用 Amazon 的 SNS 和 SQS 作为消息总线基础设施,我们的组织将有一个 SNS 实例,该实例将发布到第 3 方 SQS 实例。同样,对于第 3 方希望发送给我们的消息,他们会发布到他们的 SNS 实例,然后再发布到我们的 SQS 实例。请参阅:与 Amazon SNS 的跨账户集成
我在考虑如何使用 Azure 服务总线 (ASB) 实现这种跨组织集成,因为我们在 Azure 上投入了大量资金。但是,ASB 没有能力从一个实例发布到属于不同组织的另一个实例(或者甚至到同一组织中的另一个实例,至少目前还没有)。鉴于此限制,我们计划为第 3 方供应商提供单独的连接字符串集,允许他们收听和处理我们发布的消息,以及一组单独的连接字符串,允许他们将消息发布到主题然后我们可以订阅和处理。
我的问题是:这是个好主意吗?或者这会被认为是一种反模式吗?我最担心的事实是,虽然使用消息总线的目的是实现解耦,但 ASB 的基础设施部分使我们紧密耦合到我们需要在两个组织之间进行通信的点上,不仅是端点,而是此外,如何设置队列/主题(会话,或无会话,重复检测等)以及消费者与发送者如何发送消息(用作会话 ID、消息 ID 等的内容)紧密耦合。
这是一个有效的担忧吗?你做过吗?我可能会遇到哪些其他问题?