如何在WebSphere两个集群间配置跨集群JMS Topic?
WebSphere Application Server 9.0.5跨多集群配置JMS Topic的正确方式
你当前的问题根源在于每个集群使用独立服务集成总线(SIBus)——不同总线是完全隔离的消息域,消息无法在总线间流转,所以跨集群的发布/订阅无法生效。下面是标准配置方案:
核心配置原则
创建单元级SIBus,并将两个集群都添加为总线成员(无需单独添加每台服务器),基于该总线配置共享的JMS资源,实现跨集群的Topic消息互通。
具体配置步骤
创建单元级SIBus
- 登录WAS控制台,进入「服务集成 > 总线」,点击「新建」
- 自定义总线名称,范围选择「单元」,完成创建
将两个集群添加为总线成员
- 进入目标总线的「总线成员」页面,点击「添加」
- 选择「集群」类型,依次选中两个集群,配置消息存储(推荐用数据库存储或共享文件存储,保障高可用)
- 集群添加完成后,集群内所有服务器会自动成为总线成员,无需单独配置单台服务器
配置共享JMS Topic连接工厂
- 进入「资源 > JMS > 连接工厂」,新建Topic类型连接工厂
- 关联到刚创建的单元级总线,范围设置为「单元」(确保两个集群都能访问)
- 传输属性选择「总线成员传输」,保证跨集群连接的可靠性
配置JMS Topic与激活规范
- 创建JMS Topic:关联单元级总线,先在总线的「主题空间」页面新建主题空间,再绑定到JMS Topic
- 创建激活规范:关联单元级总线和目标主题空间,范围设置为「单元」,让两个集群的消息驱动Bean(MDB)都能通过该规范订阅消息
验证配置
- 在其中一个集群的服务器上发布Topic消息,检查另一个集群的订阅者是否能正常接收
- 查看WAS系统日志,确认总线成员间通信无报错
关键注意事项
- 禁止为每个集群创建独立总线:SIBus是消息流转的核心载体,不同总线间完全隔离,无法实现跨集群消息互通
- 优先选择集群作为总线成员:相比单独添加服务器,集群级配置能自动适配集群内服务器的增减,更适合动态运维场景
- 保障总线消息存储高可用:若使用文件存储,需为集群配置共享存储;若使用数据库,确保两个集群都能访问该数据库实例
内容的提问来源于stack exchange,提问作者AndrWeisR
相关产品推荐
相关产品推荐

