Java 何时撰写可互操作的消息:应用程序内还是欢乐?

Java 何时撰写可互操作的消息:应用程序内还是欢乐?,java,hl7,mirth,medical,Java,Hl7,Mirth,Medical,我们正在设计一个用于通信多个应用程序的体系结构,并决定将Mirth用作(伪)ESB。在我们的流程中,我们希望尽快将控制权交还给用户,因此当用户启动某个操作(例如,填写表单后按Save按钮)时,数据库中会进行一些(必要的)更改,然后必须向另一个系统发送一条消息。用户不必等待消息发送,所以当数据库更改完成时,我们的应用程序会返回控制权。消息合成是在后台异步完成的。但我们并不知道应该遵循哪种方法: a) 在我们的应用程序中启动一个新线程,收集所有必要的数据(从“主数据”开始,这是允许我们查找所有信息的

我们正在设计一个用于通信多个应用程序的体系结构,并决定将Mirth用作(伪)ESB。在我们的流程中,我们希望尽快将控制权交还给用户,因此当用户启动某个操作(例如,填写表单后按Save按钮)时,数据库中会进行一些(必要的)更改,然后必须向另一个系统发送一条消息。用户不必等待消息发送,所以当数据库更改完成时,我们的应用程序会返回控制权。消息合成是在后台异步完成的。但我们并不知道应该遵循哪种方法:

a) 在我们的应用程序中启动一个新线程,收集所有必要的数据(从“主数据”开始,这是允许我们查找所有信息的一些主键),以填充HL7消息并将其发送到Mirth正在侦听的队列

b) 将“主要数据”发送给Mirth并将HL7消息组合委托给它。Mirth可以直接访问数据库以收集必要的数据,或者另一个选项可以调用我们自己的REST/SOAP服务

在选项B的情况下,我们对如何调用欢笑有一些疑问: b、 1)我们的应用程序进行数据库修改,并将主要数据写入队列(分布式事务)。 b、 2)我们的应用程序修改数据库并调用由Mirth发布的SOAP或Rest服务,它所做的只是在Mirth也在读取的队列中写入消息(我们的应用程序中没有分布式事务)

一些人认为,在我们的应用程序中编写消息,并仅将欢笑作为代理使用,是“误用”欢笑。另一方面,有些同事发现从Mirth访问应用程序数据库非常麻烦,它不应该知道我们的模式。最后一个选项是,从Mirth调用一个app服务,该服务返回HL7所需的所有信息,就像从app向Mirth发送“主数据”一样,只有在Mirth调用服务(将该数据作为参数传递)时才能将其返回

感谢您的建议。

(1)没有足够的信息提供“专家建议”,也没有一个明确的技术上合理的答案

(2)选项(a)对于第1个版本来说似乎是最便宜、最容易实现的,尤其是在重用稳定的测试库(如

(3)在您的设计中,将您的设计视为一个整体,集中精力设计接口并澄清问题。通过这种方式,服务总线内部、消息路由和队列决策可以通过一些编码工作和遵循

(4)诸如“误用”、“侵入性”、“喜欢”、“友好”等措辞的论点可能表明了一个有效的观点,但因此不能创建一个可测量、可验证的决策标准或绩效指标,不应单独使用

(5)这是应用决策过程并对各种选项进行权重评估的正确时机。作为最低限度的正式投入,我建议

(6)在您的决定中,不应考虑以下几点:

  • 保护数据隐私(在某些国家,健康州是受法律保护的私有财产)
  • 容错性(健壮性、可靠性、异常处理)
  • 维护成本(您是否有合格的人员进行维护,解决方案是否可以自我监控和自动更正,或者有人必须手动查看数百万行日志)
  • 开发成本(您是否已经有合格的人员,您可以重用多少行代码,以及您需要创建/调试多少行代码)
(7)很抱歉,我的回答没有直接的帮助,我的选择将是以可靠的安全方式撰写消息,无论在这种情况下意味着什么,也不管它是如何连接的



最后但并非最不重要的一点:记录您做出选择的原因-永远,因此,当最初的决策者迷失在时间的沙堆中时,您可以随时测试和验证您的假设

我不确定在您的需求包括实时通知/事件以允许用户在提交表单后继续操作的情况下,Mirth是否适合用作企业服务总线

如果不了解更多信息,例如正在使用的体系结构,我们无法真正为您提供建议


在IMO中,作为一名经验丰富的Mirth集成人员,以及设计依赖于数据库的应用程序的人员,我想说,Mirth不是这项工作的合适工具

这个问题将是一个很好的补充