Ich habe eine Springboot-Anwendung, wo ich einige Kamelrouten konfiguriert habe.Spring Boot Apache Camel Routes testen
public class CamelConfig {
private static final Logger LOG = LoggerFactory.getLogger(CamelConfig.class);
@Value("${activemq.broker.url:tcp://localhost:61616}")
String brokerUrl;
@Value("${activemq.broker.maxconnections:1}")
int maxConnections;
@Bean
ConnectionFactory jmsConnectionFactory() {
PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(new ActiveMQConnectionFactory(brokerUrl));
pooledConnectionFactory.setMaxConnections(maxConnections);
return pooledConnectionFactory;
}
@Bean
public RoutesBuilder route() {
LOG.info("Initializing camel routes......................");
return new SpringRouteBuilder() {
@Override
public void configure() throws Exception {
from("activemq:testQueue").to("bean:queueEventHandler?method=handleQueueEvent");
}
};
}
}
Ich möchte von activemq diese Route testen: heißt test auf queueEventHandler :: handleQueueEvent
ich verschiedene Dinge ausprobiert, hier http://camel.apache.org/camel-test.html erwähnt, aber scheint nicht funktioniert zu bekommen.
Ich versuche, so etwas wie dieses
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {CamelConfig.class, CamelTestContextBootstrapper.class})
public class CamelRouteConfigTest {
@Produce(uri = "activemq:testQueue")
protected ProducerTemplate template;
@Test
public void testSendMatchingMessage() throws Exception {
template.sendBodyAndHeader("testJson", "foo", "bar");
.....
..... verify handleQueueEvent method is called on bean queueEventHandler by mocking
}
Aber mein ProducerTemplate ist immer null zu tun. Ich habe Autowiring Camelcontext versucht, für das ich eine Ausnahme bekomme, die besagt, dass es camelContext nicht auflösen kann. Dies kann jedoch durch Hinzufügen von SpringCamelContext.class zu @ SpringBootTest-Klassen gelöst werden. Aber mein ProducerTemplate ist immer noch null.
bitte vorschlagen. Ich benutze Camel 2.18 Springboot 1.4
Konnten Sie gesamte Route und Testcode in Git zur Verfügung stellen? Danke. – sunleo