Mule 无法从队列中拉出消息

Mule 无法从队列中拉出消息,mule,activemq,Mule,Activemq,让我解释一下我的配置: ActiveMQ 5.12.0 AnyPoint Studio 5.2.1 骡子3.6.1 申请流程: 我正在使用FunctionalTestCase从队列中发布和检索消息 MuleClient client = muleContext.getClient(); String productAsJson = "{\"name\":\"Widget\", \"price\":9.99, \

让我解释一下我的配置:

  • ActiveMQ 5.12.0

  • AnyPoint Studio 5.2.1

  • 骡子3.6.1

    申请流程:

  • 我正在使用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客户端时,消息负载没有进入队列。在查看ActiveMQ的管理控制台时,我发现消息的详细信息是“{NullPayload}”。当我使用Advanced Risk客户端进行检查时,JSON消息被正确发布

    如有任何建议,将不胜感激


    Russ

    使用MuleClient时是空负载,因为默认情况下,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或任何需要使用的方法,以获得正文。

    奇怪的是,这对PropertyScope.INBOUND和PropertyScope.OUTBOUND都有效,知道为什么吗?谢谢!昨天我摸了摸头脑,按照你的建议,换成了一个HttpClient。我能够毫无问题地发布信息。我能够使用mule客户端毫无问题地从队列中提取消息。