您想要并拥有足够的带宽来开发、监控和维护您自己的自定义解决方案吗?如果您不介意这样做,那么采用基于 .net 的自定义 MSMQ/WCF 解决方案可能会很好。
BizTalk 还将涵盖您列出的所有要求。有一个学习曲线,但它肯定不是不可逾越的。初始升级可能比自定义代码解决方案更长,但有相当大的好处,尤其是可靠地满足您的所有要求的好处:
- 安全
- 事务性
- 可靠(消息不会丢失)
- 高度可用 (24/7)
- 故障转移
- 适配器架构(包括轮询适配器)
- 转换
- 使用外部 Web 服务
- 将相关响应返回到源系统(即编排端到端流程)
- 使用代理(您专门列出了这一点,BizTalk 是代理;自定义 MSMQ 和 WCF 意味着不使用代理)
如果 BizTalk 需要轮询 POS 系统,那么您无需担心使用 MSMQ。 BizTalk 可以可靠地处理消息传输(它们被持久化到 SQL Server,而 MSMQ 将消息持久化到磁盘)。
还要注意,使 MSMQ 具有高可用性的唯一方法是将其集群化。所以无论哪种方式,你都需要集群一些东西。
随着时间的推移,BizTalk 解决方案将更易于维护,尤其是在您只想更新转换时。使用版本控制,您可以以一种不需要停机的方式执行此操作。在不停机的情况下更新自定义解决方案将很困难。
过去,有些人在监控 BizTalk 是否有失败消息时遇到了困难,但我发现这比尝试监控消息队列更容易,尤其是使用 SCOM 或 BizTalk 360 等工具,后者通常需要更多自定义功能工作进行监控。只需确保在您的解决方案生命周期内的成本估算中包括监控。
如果您确实需要审核,那么 BizTalk 也可以满足您的需求。 MSMQ Journaling 将为您保留每条消息的副本,但没有重要的交易细节,也没有现成的方式来搜索或存档数据。
构建您自己的 .NET 客户端代码以使用 Java Web 服务可能需要大量工作,无论您采用哪种方式。对于 BizTalk,这意味着针对端点或针对 WSDL 运行向导。使用 WCF 意味着手动或在 svcutil 工具的帮助下完成所有工作。