协议转换/规范化:Biztalk,替代品?


狗头军师
2025-03-25 02:39:15 (5天前)

我们需要从安全系统,火灾警报器,摄像头系统等系统中采用许多不同的协议,并将它们集成到一个通用协议中。

我希望这是一个消息服务器,许多系统都可以订阅和通过它进行通信。

轮询和非轮询“驱动程序”(协议转换器)
处理RS232 / RS485 / tcp
以Java或C#等托管语言的可编程“驱动程序”
规则引擎能力
biztalk适合吗?

有开源替代品吗?

有Java / Java EE方法吗?

一方面,该系统将是SCADA系统,另一方面是一种中间件/消息传递服务器。

任何关于最佳处理方式的想法将不胜感激。我知道在驱动程序端会涉及大量的编程,但是像我一样,从头开始构建整个系统是不合适的。

2 条回复
  1. 1# v-star*위위 | 2020-08-25 14-28

    如果您不介意在Java平台上工作,则在一个名为Apache Camel的开源项目中可以使用轻量级协议切换器和Enterprise Integration Patterns的实现。

    骆驼已经可以说出大多数常见的协议和技术,例如文件,电子邮件,JMS,XMPP等,因此这些东西不需要实际的编码。

    要添加新的自定义协议,最简单的方法是在MINA组件的基础上构建,该组件负责所有网络,套接字处理,线程等等(例如NIO与BIO等)。

    然后,您只需扩展它即可添加自己的协议编解码器(如何使用可能的成帧方法在套接字上封送/取消封送消息)。

    所述HL7组分是这样的一个例子。有关在此处编写MINA编解码器的更多详细信息。

    然后,一旦有了骆驼组件(将其称为foo),就可以使用简单的URI从任何协议桥接到任何其他协议,以实现任何企业集成模式,例如基于内容的路由器,收件人列表,路由清单等

    例如在Java代码中

    1. // route all messages from foo
    2. // to a single queue on JMS
    3. from("foo://somehost:1234").
    4. to("jms:MyQueue");
    5. // route all messages from foo component
    6. // to a queue using a header
    7. from("foo://somehost:1234").
    8. recipientList().
    9. simple("activemq:MyPrefix.${headers.cheese}");
登录 后才能参与评论