You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法向JMS队列推送有效数据,请求排查代码问题

JMS队列推送消息内容为空排查与修复

问题分析

从代码和日志来看,$ctx:XML变量确实包含有效XML内容,但JMS队列接收的消息为空,核心原因是你没有将$ctx:XML的内容设置为待发送的消息体。当前代码直接调用JMS端点时,发送的是默认的空SOAP消息体,而非$ctx:XML中的数据。

修复方案

在log组件之后、property设置之前,添加payloadFactory组件,将$ctx:XML的内容注入到SOAP消息体中。修改后的完整代码如下:

<log level="custom">
    <property name="MockApi" value="After payload"/>
    <property expression="$ctx:XML" name="Payload"/>
</log>
<!-- 新增:将$ctx:XML的内容设置为消息体 -->
<payloadFactory media-type="xml">
    <format>$1</format>
    <args>
        <arg evaluator="xml" expression="$ctx:XML"/>
    </args>
</payloadFactory>
<property name="messageType" scope="axis2" type="STRING" value="text/xml"/>
<property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
<call>
    <endpoint>
        <address format="soap11" uri="jms:/Check?transport.jms.ConnectionFactory=myQueueSender">
            <suspendOnFailure>
                <initialDuration>-1</initialDuration>
                <progressionFactor>1</progressionFactor>
            </suspendOnFailure>
            <markForSuspension>
                <retriesBeforeSuspension>0</retriesBeforeSuspension>
            </markForSuspension>
        </address>
    </endpoint>
</call>

关键说明

  • payloadFactory的作用是将指定变量(此处为$ctx:XML)的内容构建成消息的有效载荷,确保JMS端点发送的SOAP消息包含预期的XML数据。
  • 若需验证消息体是否正确生成,可在payloadFactory之后添加<log level="full"/>,查看完整的消息内容日志。

内容的提问来源于stack exchange,提问作者Wajih Haider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:04:51