在JMS队列中发送自定义对象的本机方法?(柑橘类模拟器)



我正在寻找一种本机(根据框架,正确,在框架方面正确(将第三派对(自定义(对象发送到 citrus-simulator 中的JMS?我尝试了:

scenario
.send()
.payloadModel(myObject); 

但是在JMS队列中,MyObject出现为 com.consol.citrus.message.defaultmessage 而不是 com ... myObject 。。

示例:方案 - 接收HTTP POST请求(作为触发(,并将JMS对象发送到消息队列。

config

...
.useObjectMessages(true)
...

方案

  ...
    import com.temafon.data.MORequest;
    @Scenario("morequest")
    @RequestMapping(value = "/simulator/morequest",method = RequestMethod.POST)
    public class JmsMoRequestScenario extends AbstractSimulatorScenario {
    @Override
    public void run(ScenarioDesigner scenario) {
       MORequest request = new MORequest(12345678901L, "USSD", "1172", "ON", 
       11L);
            request.setSourcePort(3);
        scenario
                .receive()
                .payload("getmorequest");
        scenario
                .send("jms.queue.destination")
                .payloadModel(request);

在此情况之后,我希望进入jms.queue.destination。

期望

现实

P.S。我已经使用 javaactionbuilder jmstemplate.send 在其他类和

中实施了解决方法。
scenario
.java(//Object).method(//instance");

,但似乎不正确

在柑橘Java DSL中设置payloadModel()始终会导致对象的某种编组表示,这不是您想要的。两者都不使用.useObjectMessages(true)为您工作,因为这会导致整个柑橘消息对象用作消息有效载荷。

您需要定义一个完整的柑橘消息对象,这将在JMS目标的有效负载创建方面保持不变。然后,柑橘将使用具有适当对象有效载荷的JMS对象消息自动使用。

MORequest request = new MORequest(12345678901L, "USSD", "1172", "ON", 11L);
request.setSourcePort(3);
scenario
    .receive()
    .payload("getmorequest");
scenario
    .send("jms.queue.destination")
    .message(new JmsMessage(request));

请注意,我正在使用.message() Fluent API而不是payloadModel() API。消息API接收一个柑橘消息对象,例如com.consol.citrus.jms.message.JmsMessagecom.consol.citrus.message.DefaultMessage

您的自定义域模型对象request被用作构造函数ARG,将导致JMS消息作为对象有效负载。当然,MORequest必须是类型java.io.Serializable

相关内容

最新更新