Apache camel Camel replaceFromWith并模拟JMS目标-Spring引导
我已经检查了《骆驼行动2》第9章的例子,看了这个,但是仍然卡住了 我使用的是Spring boot和Camel 2.18.x 我正在尝试将这两者结合为一:mockEndpoint和replaceFrom 工作场景:Apache camel Camel replaceFromWith并模拟JMS目标-Spring引导,apache-camel,Apache Camel,我已经检查了《骆驼行动2》第9章的例子,看了这个,但是仍然卡住了 我使用的是Spring boot和Camel 2.18.x 我正在尝试将这两者结合为一:mockEndpoint和replaceFrom 工作场景: from("direct:start") .id("testroute") .log("${body}") //.to("seda:finish") //This works okay
from("direct:start")
.id("testroute")
.log("${body}")
//.to("seda:finish") //This works okay
.to("jms:XYZ_Q")
;
@RunWith(CamelSpringBootRunner.class)
@MockEndpoints
@UseAdviceWith
@SpringBootTest(classes = {UnitTestApplication.class, SampleTest.class})
public class SampleTest {
@Autowired
private CamelContext camelContext;
@Autowired
private ProducerTemplate producerTemplate;
@Test
public void test01() throws Exception {
RouteDefinition route = camelContext.getRouteDefinition("testroute");
AdviceWithRouteBuilder adviceWithRB = new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith("direct:renamed");
}
};
route.adviceWith(camelContext, adviceWithRB);
camelContext.start();
producerTemplate.sendBody("direct:renamed", " 8888888820130601");
}
}
from("direct:start")
.id("testroute")
.log("${body}")
//.to("seda:finish") //This works okay
.to("jms:XYZ_Q")
;
@RunWith(CamelSpringBootRunner.class)
@MockEndpoints
@UseAdviceWith
@SpringBootTest(classes = {UnitTestApplication.class, SampleTest.class})
public class SampleTest {
@Autowired
private CamelContext camelContext;
@Autowired
private ProducerTemplate producerTemplate;
@Test
public void test01() throws Exception {
RouteDefinition route = camelContext.getRouteDefinition("testroute");
AdviceWithRouteBuilder adviceWithRB = new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith("direct:renamed");
}
};
route.adviceWith(camelContext, adviceWithRB);
camelContext.start();
producerTemplate.sendBody("direct:renamed", " 8888888820130601");
}
}
from("direct:start")
.id("testroute")
.log("${body}")
//.to("seda:finish") //This works okay
.to("jms:XYZ_Q")
;
@RunWith(CamelSpringBootRunner.class)
@MockEndpoints
@UseAdviceWith
@SpringBootTest(classes = {UnitTestApplication.class, SampleTest.class})
public class SampleTest {
@Autowired
private CamelContext camelContext;
@Autowired
private ProducerTemplate producerTemplate;
@Test
public void test01() throws Exception {
RouteDefinition route = camelContext.getRouteDefinition("testroute");
AdviceWithRouteBuilder adviceWithRB = new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith("direct:renamed");
}
};
route.adviceWith(camelContext, adviceWithRB);
camelContext.start();
producerTemplate.sendBody("direct:renamed", " 8888888820130601");
}
}
单元测试类:
from("direct:start")
.id("testroute")
.log("${body}")
//.to("seda:finish") //This works okay
.to("jms:XYZ_Q")
;
@RunWith(CamelSpringBootRunner.class)
@MockEndpoints
@UseAdviceWith
@SpringBootTest(classes = {UnitTestApplication.class, SampleTest.class})
public class SampleTest {
@Autowired
private CamelContext camelContext;
@Autowired
private ProducerTemplate producerTemplate;
@Test
public void test01() throws Exception {
RouteDefinition route = camelContext.getRouteDefinition("testroute");
AdviceWithRouteBuilder adviceWithRB = new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith("direct:renamed");
}
};
route.adviceWith(camelContext, adviceWithRB);
camelContext.start();
producerTemplate.sendBody("direct:renamed", " 8888888820130601");
}
}
我希望JMS组件不会尝试做任何事情,而是被mock替换。这是错误的理解吗
我假设JMS将被mock替代
replaceFromWith(..)
将路由的输入(from(..)
)替换为新的端点URI。它应该在以下情况下工作(使用您的示例):
.to(“jms:XYZ_Q”)
部分(来自您的问题),那么您可以使用weaveByIdToString()
,weaveById()
等函数。更多信息:replaceFromWith(..)
将路由的输入(from(..)
)替换为新的端点URI。它应该在以下情况下工作(使用您的示例):
.to(“jms:XYZ_Q”)
部分(来自您的问题),那么您可以使用weaveByIdToString()
,weaveById()
等函数。更多信息: