让我解释一下我的配置:
骡子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 Client时没有排队。在查看ActiveMQ的管理控制台时,我发现消息详细信息为“{NullPayload}”。当我使用Advance Risk Client进行检查时,JSON消息正在正确发布。
任何建议都将不胜感激。
拉斯
答案 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或您需要使用的任何需要正文的方法。