2014-02-27 125 views
0

继WSO2 ESB站点http://docs.wso2.org/display/ESB481/RabbitMQ+AMQP+Transport上的示例之后,我试图创建一个代理服务,它将通过HTTP接收消息并将此消息发布到RabbitMQ 3.2.3队列。使用WSO2 ESB从HTTP切换到RabbitMQ

我已经按照在教程中的步骤来安装p2-repo.zip创建此代理服务:当我尝试发布消息的Exchange2中

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="SendRabbitProxy" 
     transports="http" 
     statistics="enable" 
     trace="enable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <log level="full"/> 
     <property name="OUT_ONLY" value="true"/> 
     <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/> 
     </inSequence> 
     <endpoint> 
     <address uri="rabbitmq:/SendRabbitProxy?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=myqueue2&amp;rabbitmq.exchange.name=myexchange2"/> 
     </endpoint> 
    </target> 
    <description/> 
</proxy> 

/队列2加入到我的兔子服务器,但会引发以下例外情况。

有什么我失踪?

TID[-1234] [ESB] [2014-02-27 22:51:07,470] ERROR 
{org.apache.axis2.transport.base.threads.NativeWorkerPool} - Uncaught exception 
org.apache.axis2.transport.rabbitmq.RabbitMQMessageSender.send(RabbitMQMessageSender.java:100) 
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:482) 
org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:59) 
org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:338) 
org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:333) 
org.apache.synapse.endpoints.AddressEndpoint.send(AddressEndpoint.java:59) 
org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:187) 
org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) 
org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:411) 
org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:183) 
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
java.lang.Thread.run(Thread.java:744) 
+0

您可以将以下属性添加到您的端点并尝试吗? rabbitmq.queue.routing.key – udarakr

+0

我改变了我的URI: <地址URI =“RabbitMQ的:?/ SendRabbitProxy rabbitmq.server.host.name =本地主机& rabbitmq.server.port = 5672 & rabbitmq.server.user。名称=来宾& rabbitmq.server.password =来宾& rabbitmq.queue.name = myqueue2 & rabbitmq.exchange.name = myexchange2 & rabbitmq.queue.routing.key =“/> 而在出现相同的错误日志... – glm

回答

0

什么是您正在使用的ESB版本。如果是< 4.8.0这个问题没有解决。

这里的公共JIRA - https://wso2.org/jira/browse/ESBJAVA-2449

+0

我使用的是Wso2 ESB 4.8.1,你认为这个问题可能在p2-repo.zip上? – glm

0

这里来解决这个问题WSO2 ESB 4.8.1解决方法。 似乎Content-Type没有被正确定义,在这个博客中解释了如何使用自定义介体解决它。

https://luispenarrubia.wordpress.com/2015/05/04/how-to-integrate-wso2-esb-and-rabbitmq-using-amqp-transport-part-2/

问候。

+0

请注意,[只有链接的答案](http://meta.stackoverflow.com/tags/link-only-answers/info)不鼓励,所以答案应该是搜索解决方案的终点(vs.而另一个引用的中途停留时间往往会随着时间推移而过时)。请考虑在此添加独立的摘要,并将链接保留为参考。 – kleopatra

+0

你是对的。这里有两个问题,所提供的链接解决了这个问题。 1)EndPoint与RabbitMQ不正确。将交换(rabbitmq.exchange.name = amq.direct)和路由密钥(rabbitmq.queue.routing.key = myqueue2)添加到URL中。 2)正确添加内容类型标题。关注博客文章。 – Chilcano