无法从队列中拉出消息

时间:2015-08-27 17:24:19

标签: mule activemq

让我解释一下我的配置:

  1. ActiveMQ 5.12.0
  2. AnyPoint Studio 5.2.1
  3. 骡子3.6.1

    申请流程:

  4. Config

    我正在使用FunctionalTestCase从队列中发布和检索消息。

     MuleClient client = muleContext.getClient();
     String productAsJson = "{\"name\":\"Widget\",  \"price\":9.99,  \"weight\":1.0,  \"sku\":\"abcd-12345\"}";
     client.dispatch("http://localhost:8081/products", productAsJson, null);
     MuleMessage result = client.request("jms://products", RECEIVE_TIMEOUT);
    

    正在发生的是邮件已发布但当我尝试检索时,我收到字符串“{NullPayLoad}”。

    在退回流程后,我发现消息有效负载在使用Mule Client时没有排队。在查看ActiveMQ的管理控制台时,我发现消息详细信息为“{NullPayload}”。当我使用Advance Risk Client进行检查时,JSON消息正在正确发布。

    任何建议都将不胜感激。

    拉​​斯

1 个答案:

答案 0 :(得分:3)

使用MuleClient时它是NullPayload,因为默认情况下,http操作将是GET并且不会期望正文解析。

MuleClient更适合使用Mule传输基础设施,例如JMS传输或旧的http传输。我不认为它对新的http监听器模块有好处。

通常使用传输,您可以通过属性设置方法,但这似乎不适用于http:listener:

        MuleMessage message = getTestMuleMessage();
        message.setPayload(productAsJson);
        message.setProperty("http.method", "POST", PropertyScope.INBOUND);

        client.send("http://localhost:8089/products", message);

我建议使用标准HTTP客户端,例如Apache HTTP客户端等,并将方法设置为POST / PUT或您需要使用的任何需要正文的方法。