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, \
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客户端毫无问题地从队列中提取消息。