我正在寻找一种本机(根据框架,正确,在框架方面正确(将第三派对(自定义(对象发送到 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.JmsMessage
或com.consol.citrus.message.DefaultMessage
您的自定义域模型对象request
被用作构造函数ARG,将导致JMS消息作为对象有效负载。当然,MORequest
必须是类型java.io.Serializable