通过HTTP请求触发时,无法使用Mule请求者使用AMQP消息

时间:2014-05-13 00:47:21

标签: mule amqp

我目前有一个使用特定HTTP请求路径触发的流,然后该路径应该向本地托管的RabbitMQ服务器发出请求。但是,我似乎无法看到Mule Requester模块的输出;我看到了HTTP请求。以下是我目前流程的要点:

<flow name="get-queue-messages-manually" doc:name="get-queue-messages-manually" initialState="started">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="getqueue" contentType="text/plain" doc:name="HTTP"/>
    <mulerequester:request returnClass="java.io.String"  config-ref="Mule_Requester" resource="amqp://myexchange"  doc:name="Mule Requester"/>
    <logger level="INFO" doc:name="Logger"/>
    <echo-component doc:name="Echo"/>
</flow>

我能够向交易所发送消息并让它们排队没有问题,但我似乎无法提取任何消息。据我了解,Mule Requester模块允许人们在流程中的任何一点请求资源;我相信我也读到它导致异步操作,这可能是这里的问题。在这种情况下,我如何能够检索排队的消息,而不是HTTP请求?

我也查看了Mulesoft AMQP文档,虽然URI规范提到了格式amdq:// {exchange} / amqp-queue。{queue},但似乎Mule Requester不接受这个,因为它似乎只采取交换名称。控制台日志确实包含一行,表明已创建专用队列,并且从一点点搜索,是否表明未指定队列名称?但是,不太确定如何在这个组件中完成。

请注意,我首先拥有HTTP请求元素的原因是我不希望在收到消息时关闭流,因此HTTP组件用于确保仅在请求时读取消息。如果没有HTTP组件,一切都会膨胀。

提前感谢有关此问题的任何指示 - 现在已经挣扎了一段时间。

1 个答案:

答案 0 :(得分:4)

嗯,现在我觉得很傻。这确实可以使用骡子请求者来完成。 资源字段的格式应为:amqp:// amqp-queue。{queueName}。一旦我使用队列名称而不是交换,我终于在有效负载中看到了消息。希望这有助于他人! (接受自己的答案似乎有一个限制;一旦取消,我会接受这个答案)