为Mule客户端发送的消息设置会话属性

为Mule客户端发送的消息设置会话属性,mule,Mule,我正在尝试从FunctionalTestCase方法中为DefaultMuleMessage设置会话属性,如下所示: @Test public void ProcessActivityTest() throws Exception{ MuleClient client = new MuleClient(muleContext); Activity activity = new Activity(EdusTestService.buildActivity().toStr

我正在尝试从FunctionalTestCase方法中为DefaultMuleMessage设置会话属性,如下所示:

    @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();