为Mule客户端发送的消息设置会话属性
我正在尝试从FunctionalTestCase方法中为DefaultMuleMessage设置会话属性,如下所示:为Mule客户端发送的消息设置会话属性,mule,Mule,我正在尝试从FunctionalTestCase方法中为DefaultMuleMessage设置会话属性,如下所示: @Test public void ProcessActivityTest() throws Exception{ MuleClient client = new MuleClient(muleContext); Activity activity = new Activity(EdusTestService.buildActivity().toStr
@Test
public void ProcessActivityTest() throws Exception{
MuleClient client = new MuleClient(muleContext);
Activity activity = new Activity(EdusTestService.buildActivity().toString());
DefaultMuleMessage message = new DefaultMuleMessage(activity, muleContext);
message.setSessionProperty("edusKey", "1234567890");
MuleMessage result = client.send("vm://processActivity?connector=inMemoryVMQueue", message);
System.out.println(result.getPayload().getClass().toString());
System.out.println(result.getPayloadAsString());
System.out.println(result.getExceptionPayload().getException().getMessage());
assertEquals("{\"activity\":{}}", result.getPayloadAsString());
}
但是,我一直得到以下非法状态例外:
java.lang.IllegalStateException: Detected an attempt to set a invocation
or session property, but a MuleEvent hasn't been created using this message
yet. Key/value: edusKey=1234567890
如何设置要在此FunctionalTestCase方法中使用的会话属性?会话作用域属性用于内部Mule流之间,而不是通过客户端等外部流。通过将属性范围设置为OUTBOUND,Mule将在收到消息后将属性复制到消息的入站属性
HTH您可以使用一个测试事件和流程,该事件和流程与您的流程一起使用:
DefaultMuleMessage message = new DefaultMuleMessage(activity, muleContext);
MuleEvent event = getTestEvent(message);
event.setSessionVariable("edusKey", "1234567890");
Flow flow = (Flow) getFlowConstruct("my-flow");
MuleEvent responseEvent = flow.process(event);
responseEvent.getMessageAsString();