NullPointer 引用在 RabbitMQ 传输上发送消息

NullPointer reference sending message on RabbitMQ transport

使用此传输字符串从 ESB 4.9.0 API 发送到 RabbitMQ 时:

<send>
    <endpoint>
        <address name="scalehouse_001_rabbitmq" trace="enable" uri="rabbitmq:/ScaleHouses?rabbitmq.server.host.name=localhost&amp;rabbitmq.server.port=5672&amp;rabbitmq.server.user.name=guest&amp;rabbitmq.server.password=guest&amp;rabbitmq.queue.name=scalehouse_001"/>
    </endpoint>
  </send>

我收到这个错误:

java.lang.NullPointerException at org.apache.axis2.transport.rabbitmq.RabbitMQMessage.&lt;init&gt;(RabbitMQMessage.java:43) at org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendOverAMQP(RabbitMQSender.java:84) at org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendMessage(RabbitMQSender.java:72) at org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:185) at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:167) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:542) at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:79)

有没有人有使用 RabbitMQ 传输的经验,并且可以深入了解潜在原因?

我认为问题出在您的 axis2.xml 配置中。请按照以下步骤操作。

在 axis2.xml 的传输接收器部分下,找到 rabbitmq 传输接收器并将其替换为您的配置。此处提供示例配置以帮助您。

<transportReceiver name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQListener">
    <parameter name="AMQPConnectionFactory" locked="false">
        <parameter name="rabbitmq.server.host.name" locked="false">localhost</parameter>
        <parameter name="rabbitmq.server.port" locked="false">5672</parameter>
        <parameter name="rabbitmq.server.user.name" locked="false">guest</parameter>
        <parameter name="rabbitmq.server.password" locked="false">guest</parameter>
        <parameter name="rabbitmq.connection.retry.interval" locked="false">10000</parameter>
        <parameter name="rabbitmq.connection.retry.count" locked="false">5</parameter>
    </parameter>
</transportReceiver>

从上面的配置来看,WSO2 ESB 可以充当 RabbitMQ 消费者。然后在 axis2.xml 中找到 rabbitmq 的传输发送方元素并取消注释。下面给出了 rabbitmq 发送器的示例配置。

<transportSender name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQSender"/>

应用这行代码后,WSO2 ESB 可以充当 RabbitMQ 生产者,它可以向给定的 RabbitMQ 队列或主题生产消息。

有关更多信息,您可以在此处找到。

http://ravindraranwala.blogspot.com/2015/09/rabbitmq-transport-in-wso2-esb.html