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

WSO2 MI与RabbitMQ配置:如何仅接收原始JSON而非SOAP信封

解决WSO2 MI RabbitMQ消费原始JSON消息的配置调整

一、生产端(REST API + 发布序列)配置调整

确保发布到RabbitMQ Message Store的消息是原始JSON,不被封装为SOAP信封:

  • 在发布序列中添加属性设置,强制消息类型为JSON并禁用SOAP包装:
<property name="MESSAGE_TYPE" value="application/json" scope="axis2"/>
<property name="DISABLE_SOAP_ENVELOPE" value="true" scope="axis2"/>
  • 若使用store mediator存储消息,序列中不要添加多余的SOAP转换逻辑,直接传递原始请求体。

二、RabbitMQ Message Store配置调整

修改Message Store配置,使用SimpleMessageFormatter存储原始消息内容,避免自动封装SOAP:

<messageStore name="RabbitMQMessageStore" class="org.wso2.carbon.message.store.persistence.rabbitmq.RabbitMQMessageStore">
    <parameter name="rabbitmq.server.host.name">localhost</parameter>
    <parameter name="rabbitmq.server.port">5672</parameter>
    <parameter name="rabbitmq.virtual.host">/</parameter>
    <parameter name="rabbitmq.username">guest</parameter>
    <parameter name="rabbitmq.password">guest</parameter>
    <parameter name="rabbitmq.queue.name">test-queue</parameter>
    <!-- 指定原始消息格式化器 -->
    <parameter name="messageFormatter">org.wso2.carbon.message.store.persistence.rabbitmq.formatters.SimpleMessageFormatter</parameter>
</messageStore>

三、RabbitMQ Inbound Endpoint配置调整

调整入站端点,使其直接读取原始JSON消息,不解析为SOAP信封:

<inboundEndpoint name="RabbitMQInbound" onError="fault" protocol="rabbitmq" sequence="ConsumeSequence" suspend="false">
    <parameters>
        <parameter name="rabbitmq.server.host.name">localhost</parameter>
        <parameter name="rabbitmq.server.port">5672</parameter>
        <parameter name="rabbitmq.virtual.host">/</parameter>
        <parameter name="rabbitmq.username">guest</parameter>
        <parameter name="rabbitmq.password">guest</parameter>
        <parameter name="rabbitmq.queue.name">test-queue</parameter>
        <!-- 启用原始消息处理器 -->
        <parameter name="messageProcessor">org.wso2.carbon.inbound.endpoint.protocol.rabbitmq.RawXmlMessageProcessor</parameter>
        <!-- 指定内容类型为JSON -->
        <parameter name="contentType">application/json</parameter>
        <!-- 禁用SOAP信封解析 -->
        <parameter name="disableSoapEnvelope">true</parameter>
    </parameters>
</inboundEndpoint>

四、消费序列调整

消费序列可直接处理JSON payload,无需额外提取操作:

<sequence name="ConsumeSequence" trace="disable">
    <log level="full">
        <property name="Received JSON" expression="$body"/>
    </log>
    <!-- 后续业务逻辑 -->
</sequence>

完成以上配置后,消费端就能直接收到原始的JSON消息{"publishId":"7ee7147d-a17b-44a0-b503-860f7b0139c9"},而非SOAP信封格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 07:10:15