MuleSoft Azure Service Bus连接器返回sessionId为null的问题排查
先确认连接器的会话模式开关
MuleSoft的Azure Service Bus Message Listener连接器,光在高级选项卡填sessionId没用,得确保开启了会话接收模式。有些版本的连接器默认是非会话模式,得在基础配置里找到“启用会话”之类的开关勾选上,不然哪怕指定了sessionId,连接器还是会创建非会话接收器,直接触发报错。升级连接器到稳定版本
旧版本的MuleSoft Azure Service Bus连接器有会话处理的bug,指定sessionId也不生效。建议升级到最新的稳定版(比如1.15.0及以上,具体看MuleSoft的兼容矩阵),新版本修复了不少这类会话相关的问题。核对sessionId的完全一致性
发送消息时设置的sessionId得是纯字符串,别带空格或特殊字符。MuleSoft里填的sessionId要和消息里的完全匹配,包括大小写——Azure Service Bus的sessionId是大小写敏感的,差一点都不行。换用会话专属的接收器操作
要是Listener还是有问题,试试用azure-service-bus:receive-session-message操作代替Listener,显式指定sessionId来拉取会话消息。启用会话的队列必须用会话接收器,普通接收器根本没法处理。检查Azure端的会话状态
登Azure门户确认:队列的“会话启用”属性确实是“是”,消息的会话ID也确实是"orders"。另外看看有没有其他接收器锁定了这个sessionId的消息,要是有的话,得先释放锁,不然当前连接器拿不到消息。可以在队列的“会话”页面查看活跃会话状态。
内容的提问来源于stack exchange,提问作者Hrithik Naha

