错误 - WSO2 与 rabbitMQ

ERROR - WSO2 with rabbitMQ

在代理中,我要将此发送到 rabbitMQ:

         <property name="messageType" value="text/xml" scope="default"/>
         <property name="contentType" value="text/xml" scope="default"/>
         <property name="rabbitmq.attributes.app.id"
                   value="RMIS"
                   scope="axis2"
                   type="STRING"/>
         <property name="rabbitmq.attributes.type"
                   value="BRANCH"
                   scope="axis2"
                   type="STRING"/>
         <property name="rabbitmq.attributes.user.id"
                   value="RMIS"
                   scope="axis2"
                   type="STRING"/>
         <property name="MESSAGE_ID" expression="get-property('MessageID')"/>
         <script language="js">var messageID = mc.getProperty('MESSAGE_ID').substring(9,45);
          mc.setProperty("RABBIT_MESSAGE_ID", messageID);</script>
         <property name="rabbitmq.attributes.custom.message.id"
                   expression="get-property('RABBIT_MESSAGE_ID')"
                   scope="axis2"/>
         <clone continueParent="true">
            <target sequence="writeToFile"/>
         </clone>
         <send>
            <endpoint key="rabbit"/>
         </send>

在端点中:

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="rabbit">
   <address uri="rabbitmq://writeToQueue?rabbitmq.server.host.name=localhost&rabbitmq.server.port=5672&rabbitmq.server.user.name=guest&rabbitmq.server.password=guest&rabbitmq.queue.name=queque" format="soap11">
      <suspendOnFailure>
         <progressionFactor>1.0</progressionFactor>
      </suspendOnFailure>
      <markForSuspension>
         <retriesBeforeSuspension>0</retriesBeforeSuspension>
         <retryDelay>3000</retryDelay>
      </markForSuspension>
      <timeout>
         <responseAction>fault</responseAction>
      </timeout>
   </address>
</endpoint>
                        

但是当我将它发送到 rabbitMQ 服务器时我发现了一个错误:

TID[-1234] [ESB] [2016-06-03 16:32:06,479] ERROR {org.apache.synapse.core.axis2.Axis2Sender} - Unexpected error during sending message out
org.apache.axis2.transport.rabbitmq.RabbitMQMessage.(RabbitMQMessage.java:43)
org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendOverAMQP(RabbitMQSender.java:84)
org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendMessage(RabbitMQSender.java:72)
org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112)
org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:185)
org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:167)
org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:542)
org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:79)
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:461)
org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:372)
org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65)
org.apache.synapse.endpoints.IndirectEndpoint.send(IndirectEndpoint.java:55)
org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:105)
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81)
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48)
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149)
org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185)
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:395)
org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142)
org.apache.axis2.transport.base.threads.NativeWorkerPool.run(NativeWorkerPool.java:172)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

WSO2 ESB 中的日志: 而且我不明白,为什么不能接触rabbitMQ。在 rabbitMQ 中,我也没有发现任何错误。 ERROR_DETAIL : org.apache.synapse.SynapseException: Unexpected error during sending message out at org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:247) at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:91) at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:461) at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:372) at org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65) at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:105) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81) at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48) at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149) at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:395) at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142) at org.apache.axis2.transport.base.threads.NativeWorkerPool.run(NativeWorkerPool.java:172) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: 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) ... 15 more

新堆栈跟踪: `[2016-06-27 17:07:00,380] 错误 - Axis2Sender 发送消息时出现意外错误 java.lang.IllegalStateException:无效配置:'routingKey' 必须为非空。 在 com.rabbitmq.client.impl.AMQImpl$Basic$Publish.(AMQImpl.java:2278) 在 com.rabbitmq.client.AMQP$Basic$Publish$Builder.build(AMQP.java:1219) 在 com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:647) 在 com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:630) 在 com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:621) 在 org.apache.axis2.transport.rabbitmq.RabbitMQMessageSender.send(RabbitMQMessageSender.java:252) 在 org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendOverAMQP(RabbitMQSender.java:85) 在 org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendMessage(RabbitMQSender.java:72) 在 org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112) 在 org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 在 org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:297) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) 在 org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:542) 在 org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:79) 在 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:461) 在 org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:372) 在 org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65) 在 org.apache.synapse.endpoints.IndirectEndpoint.send(IndirectEndpoint.java:55) 在 org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:105) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48) 在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149) 在 org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 在 org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:395) 在 org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142) 在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(来源不明) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(来源不明) 在 java.lang.Thread.run(来源不明) [2016-06-27 17:07:00,386] 警告 - 故障处理程序 ERROR_CODE:0 [2016-06-27 17:07:00,386] WARN - FaultHandler ERROR_MESSAGE:发送消息时出现意外错误 [2016-06-27 17:07:00,387] WARN - FaultHandler ERROR_DETAIL : org.apache.synapse.SynapseException: 发送消息时出现意外错误 在 org.apache.synapse.core.axis2.Axis2Sender.handleException(Axis2Sender.java:247) 在 org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:91) 在 org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:461) 在 org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:372) 在 org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:65) 在 org.apache.synapse.endpoints.IndirectEndpoint.send(IndirectEndpoint.java:55) 在 org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:105) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:81) 在 org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:48) 在 org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:149) 在 org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:185) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 在 org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:395) 在 org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:142) 在 org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(来源不明) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(来源不明) 在 java.lang.Thread.run(来源不明) 原因:java.lang.IllegalStateException:无效配置:'routingKey' 必须为非空。 在 com.rabbitmq.client.impl.AMQImpl$Basic$Publish.(AMQImpl.java:2278) 在 com.rabbitmq.client.AMQP$Basic$Publish$Builder.build(AMQP.java:1219) 在 com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:647) 在 com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:630) 在 com.rabbitmq.client.impl.ChannelN.basicPublish(ChannelN.java:621) 在 org.apache.axis2.transport.rabbitmq.RabbitMQMessageSender.send(RabbitMQMessageSender.java:252) 在 org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendOverAMQP(RabbitMQSender.java:85) 在 org.apache.axis2.transport.rabbitmq.RabbitMQSender.sendMessage(RabbitMQSender.java:72) 在 org.apache.axis2.transport.base.AbstractTransportSender.invoke(AbstractTransportSender.java:112) 在 org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442) 在 org.apache.axis2.description.OutOnlyAxisOperationClient.executeImpl(OutOnlyAxisOperation.java:297) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java:149) 在 org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:542) 在 org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:79) ... 还有 16 个

[2016-06-27 17:07:00,388] WARN - FaultHandler ERROR_EXCEPTION : org.apache.synapse.SynapseException: 发送消息时出现意外错误 [2016-06-27 17:07:00,388] WARN - FaultHandler FaultHandler:端点[兔子] [2016-06-27 17:07:00,388] 警告 - EndpointContext 端点:rabbit 将被标记为已暂停,因为它失败了`

将以下属性添加到 Proxy 的序列中。

<property name="OUT_ONLY" value="true"/>
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>

那么你的配置应该如下所示:

     <property name="messageType" value="text/xml" scope="default"/>
     <property name="contentType" value="text/xml" scope="default"/>
     <property name="OUT_ONLY" value="true"/>
     <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
     <property name="rabbitmq.attributes.app.id"
               value="RMIS"
               scope="axis2"
               type="STRING"/>
     <property name="rabbitmq.attributes.type"
               value="BRANCH"
               scope="axis2"
               type="STRING"/>
     <property name="rabbitmq.attributes.user.id"
               value="RMIS"
               scope="axis2"
               type="STRING"/>
     <property name="MESSAGE_ID" expression="get-property('MessageID')"/>
     <script language="js">var messageID = mc.getProperty('MESSAGE_ID').substring(9,45);
        mc.setProperty("RABBIT_MESSAGE_ID", messageID);</script>
     <property name="rabbitmq.attributes.custom.message.id"
               expression="get-property('RABBIT_MESSAGE_ID')"
               scope="axis2"/>
     <clone continueParent="true">
        <target sequence="writeToFile"/>
     </clone>
     <send>
        <endpoint key="rabbit"/>
     </send>

根据新的 stackTrace,提到“'routingKey' 必须是非空的。”

请为此添加 "rabbitmq.exchange.name" 参数和相关值。

例如:

<endpoint>
     <address
     uri="rabbitmq:/AMQPProxy?rabbitmq.server.host.name=192.168.0.3&rabbitmq.server.port=5672&rabbitmq.server.user.name=user&rabbitmq.server.password=abc123&rabbitmq.queue.name=queue2&rabbitmq.exchange.name=exchange2"/>
  </endpoint>

如果您需要进一步说明,请参阅 WSO2 文档:https://docs.wso2.com/display/ESB490/RabbitMQ+AMQP+Transport