如何在BizTalk中实现跨应用订阅XML消息?
BizTalk跨应用消息订阅与映射实现方案
核心逻辑
不用给每个应用单独配置点对点端口,直接利用BizTalk的MessageBox发布/订阅机制即可实现。com.xmlapp把XML消息发布到MessageBox后,com.app1、com.app2通过消息类型筛选器订阅消息,再完成映射转发。
具体实现步骤
统一消息类型识别
- 将com.xmlapp中构造XML消息的**架构(Schema)**抽离到独立的公共类库项目(比如
CommonSchemas),让com.xmlapp、com.app1、com.app2都引用这个类库。这样所有应用识别的是同一个消息类型,避免因架构所在程序集不同导致订阅失败。 - 如果已经把架构放在com.xmlapp中,也可以让com.app1、com.app2直接引用com.xmlapp的程序集,但公共类库的方式更利于解耦维护。
- 将com.xmlapp中构造XML消息的**架构(Schema)**抽离到独立的公共类库项目(比如
com.xmlapp发布消息到MessageBox
- 在com.xmlapp的业务流程里,构造好目标XML消息后,添加一个直接绑定发送端口:
- 端口类型设为「发送」,绑定选项选择「到MessageBox」;
- 无需指定目标应用,消息发送后会进入MessageBox等待订阅者。
- 在com.xmlapp的业务流程里,构造好目标XML消息后,添加一个直接绑定发送端口:
com.app1/com.app2订阅并处理消息
- 方式一:业务流程订阅(适合需要复杂逻辑的场景)
- 在com.app1的业务流程中添加直接绑定接收端口,绑定选项选择「从MessageBox」;
- 配置端口筛选器:在端口属性的「筛选器」标签页,添加条件
BTS.MessageType == "http://你的消息命名空间/消息根节点名称",这里的消息类型必须和com.xmlapp发送的完全一致; - 接收消息后,添加「映射(Map)」组件完成格式转换,再通过发送端口转发到目标系统。
- 方式二:发送端口直接订阅(适合仅需映射转发的轻量场景)
- 若无需业务逻辑,直接在BizTalk管理控制台创建发送端口:
- 选择对应传输类型(如HTTP、FILE),在「筛选器」中设置和上述一致的消息类型条件;
- 在「映射」标签页添加原消息到目标消息的映射,BizTalk会自动完成订阅、映射、发送的全流程。
- 若无需业务逻辑,直接在BizTalk管理控制台创建发送端口:
- 方式一:业务流程订阅(适合需要复杂逻辑的场景)
部署与权限注意
- 确保所有应用部署在同一个BizTalk组下(跨组订阅需额外配置,同组更简便);
- 给各应用的服务账号分配MessageBox的接收、发送权限,避免因权限不足导致消息流转失败。
内容的提问来源于stack exchange,提问作者Alex K
相关产品推荐
相关产品推荐

