续前篇!
Service Integration Bus(简称 SIB,集成服务总线)是 WebSphere Application Server (WAS) 提供的一套高可用、事务性、异步消息传输机制,是 IBM BAW、BPM、ODM、ESB 等产品通信的底层支撑系统之一。
一、什么是 Service Integration Bus(SIB)?
SIB (服务集成总线)是 WebSphere 的内部消息传递框架,可以用来在应用之间可靠地传递消息,类似 IBM MQ 但内嵌于 WAS:
特性 | 说明 |
---|---|
支持 JMS 1.1 | 兼容 JMS API,可与 MDB、消息驱动流程集成 |
不依赖外部 MQ | 内置消息总线,无需额外安装 IBM MQ |
支持事务 | 与 WAS 的事务管理器集成 |
高可用 | 可配合集群使用,支持消息持久化、失败恢复 |
二、SIB 组件结构
组件 | 作用 |
---|---|
Service Integration Bus (总线) | 消息传输逻辑抽象实体 |
Bus Member(成员) | 实际处理消息的 WebSphere Server |
消息引擎(Messaging Engine) | 真正负责消息收发、持久化的组件,绑定到服务器 |
Destination(目的地) | 消息接收者,类似于队列/主题 |
消息链路(Link) | 用于在不同 Bus 或 Server 间通信 |
SIB 服务(SIB Service) | 提供运行支撑,例如存储、传输管理 |
三、BAW 中 SIB 的典型使用场景
功能模块 | 用途 | 背后 SIB 支持 |
---|---|---|
UCA(调度器) | 定时/延迟触发流程 | 使用 JMS 消息触发 |
REST 或 WebService 异步调用 | 请求排队 | 通过 SIB 中转 |
事件监听、业务规则通知 | 异步传递消息 | 使用 SIB 队列 |
流程消息事件中间状态管理 | 持久消息引擎 | SIB 存储 |
四、SIB 配置步骤详解
以下在 WebSphere 控制台中完成:
1. 创建 Service Integration Bus
路径:
服务集成➝ 总结 ➝ 新建
配置项:
-
总线名称:例如
BAW_Bus
-
事务日志持久化:建议启用(需 JDBC 数据源)
-
高可用消息:建议启用(如为集群部署)
2. 添加 Bus 成员(即服务器)
路径:
总线 ➝ BAW_Bus ➝ [成员] ➝ 添加
配置项:
-
选择绑定的服务器或集群节点
-
消息引擎名称(如:
BAW_MessagingEngine
) -
存储机制:
-
文件存储(默认,适合测试)
-
数据库存储(推荐,需配置 JDBC 数据源)
-
3. 配置持久化存储(建议使用数据库)
路径:
服务器 ➝ SIB 服务 ➝ 持久存储配置
配置项:
-
类型:数据源
-
数据源:选择已配置的 JDBC(如
BPMDB
) -
表自动创建:可启用,或提前手动建表
4. 创建目的地(Destination)
路径:
Buses ➝ BAW_Bus ➝ [目的地] ➝ 创建
配置项:
-
类型:队列 or 发布/订阅
-
名称:例如
UCAQueue
-
分配目标:指定哪个成员使用该目的地
5. JMS 配置(供 Java、MDB 使用)
路径:
资源 ➝ JMS ➝ 队列连接工厂 / 队列 ➝ 新建
配置项:
-
JNDI 名称:供应用程序查找(如
jms/BAWQueueCF
) -
目标总线:选择 BAW_Bus
-
目的地类型:Queue 或 Topic
-
安全、事务支持:根据需要开启
五、BAW 中常见的 SIB 相关条目
路径:
服务器 ➝ WebSphere Application Server ➝ 消息传递引擎
可查看:
-
消息引擎名称及状态
-
入站传输(Inbound Transport Chain)
-
消息队列是否正常激活
常见问题与排查
问题 | 原因 | 解决方案 |
---|---|---|
消息未触发流程 | 消息引擎未启动 / 队列未绑定 | 检查 Messaging Engine 状态和 UCA 队列 |
持久消息丢失 | 没有使用数据库存储 | 配置 JDBC 存储,并检查数据源 |
队列连接失败 | JMS 连接工厂错误 | 检查 JNDI 名称是否一致 |
多节点部署消息不通 | 没有配置消息链路 | 在 Buses 中创建内部 Link |
最佳实践总结
操作 | 建议 |
---|---|
消息引擎持久化 | 使用数据库而非文件 |
总线命名 | 与 BAW 版本或功能关联,如 BPM85_Bus |
监控机制 | 开启消息引擎状态监控和 SIB 日志 |
性能调优 | 根据消息量调整持久化批量大小、队列线程池 |
失败恢复 | 配合 HA 架构部署集群,提高稳定性 |