Mule 4中如何为JMS Connector配置Azure服务总线队列的Session ID
Mule 4 JMS Connector对接启用会话的Azure Service Bus队列配置方案
报错根因
你收到的报错是启用了会话功能的ASB队列的强制限制:
为目标[QUEUE:poc-session-queue]创建消费者时发生错误:要求会话的实体无法创建非会话消息接收器。
所有消费该队列的客户端必须使用会话感知的消费者,JMS Connector默认创建的普通消费者不符合要求,所以初始化失败。
配置要点
Session ID对应属性说明
Azure Service Bus的会话ID在JMS标准实现中对应的就是JMSXGroupID属性,你之前配置不生效的核心原因是没有开启会话消费模式。JMSXGroupSeq属性无需手动赋值,ASB的JMS客户端会自动维护该序号,若业务需要自定义分组顺序,可传入从1开始递增的正整数。
消费者(On New Message源)配置
- 进入JMS Connector的On New Message源配置界面,找到「消费设置」分类下的会话模式选项,选择「持久化共享会话」(不同Mule版本翻译可能存在差异,对应英文为Durable Shared Session),启用会话消费模式。
- 若需要仅消费指定Session ID的消息,在源配置的「选择器」字段填写规则:
JMSXGroupID = '你需要指定的Session ID值'即可。
生产者配置
如果需要发送带指定Session ID的消息到队列,在JMS Publish操作的「消息属性」配置中添加属性JMSXGroupID,值设置为你需要的Session ID即可,JMSXGroupSeq保持默认留空。
内容的提问来源于stack exchange,提问作者SharletteMA
相关产品推荐
相关产品推荐

