我可以将 BizTalk 用作微服务架构中的消息代理吗?

Can I use BizTalk as Message Broker in a Microservices architrecture?

通常当我们谈论微服务 架构时,我们发现消息代理RabbitMQKafka.

但是,在我当前的环境中,他们已经有了 BizTalk。根据我对 BizTalk 的理解,应该可以完成这项工作。所以我的问题更多是从最佳实践的角度出发。很容易找到 RabbitMQ 和 Kafka 的比较,BizTalk 上的比较不多。

我在以前的工作中使用过一些 BizTalk,而在我现在的工作中使用过 RabbitMQ。虽然可以为此目的使用 BizTalk,但这并不常见(根据 Microsoft)。

重用已有的东西有一定的价值,但根据我的经验,使用 RabbitMQ 的开销要少得多。它只是一个消息代理,并且没有许多其他东西,比如 BizTalk。它带来了很多可能的问题,而且正如您所见,一般搜索提供的支持信息有限。

除非您有兴趣使用 BizTalk 提供的 transformation/repair/etc 选项,否则我不会推荐它。据我所知,它通常用于促进与遗留或外部软件的通信。即便如此,如果您正在使用微服务,您也可以为此再开发一个。

是的,BizTalk Server 是一个非常好的消息代理,但它仍然是一个带有消息传递的应用程序平台。

但是,我从未见过使用现有 BizTalk 的环境,其中 RMQ 或任何其他 'message broker' 实际上是任何事情所必需的。

现在,如果您在 Azure 中寻找基于服务的应用程序,您会选择服务总线。

Biztalk 会将每条消息存储在 SQL 数据库中,这会增加延迟和缩放问题。第二,每条消息都需要转换为 XML 以利用 Biztalk Orchestration 功能。

相反,Kafka 将其存储在本地文件系统中,因此速度非常快。

除非您必须利用与遗留系统对话的 biztalk 适配器,否则您不希望它存在。如果有,则使用 Kafka 将所需的消息副本扔给 biztalk 服务器,但仍然不要使用它来替代 Kafka 进行微服务之间的通信。

希望对您有所帮助