package camelinaction; import com.consol.citrus.dsl.endpoint.CitrusEndpoints; import com.consol.citrus.http.client.HttpClient; import com.consol.citrus.jms.endpoint.JmsEndpoint; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.TransportConnector; import org.apache.activemq.xbean.XBeanBrokerService; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.*; import org.springframework.http.HttpMethod; import java.net.URI; /** * Citrus Spring configuration for JMS backend and Http client components * that are used during the integration test. * * This configuration also imports the Camel application as Spring context. */ @Configuration @ImportResource("classpath:camelinaction/status.xml") @PropertySource("classpath:citrus.properties") public class EndpointConfig { /** ActiveMQ broker url */ @Value("${jms.broker.url}") private String jmsBrokerUrl; /** * Citrus JMS endpoint * do a sync request/reply over JMS on the queue named order.status with a timeout of 10 seconds */ @Bean public JmsEndpoint statusEndpoint() { return CitrusEndpoints.jms().synchronous() .connectionFactory(jmsConnectionFactory()) .destination("order.status") .timeout(10000L) .build(); } /** * Citrus Http client * do a sync request/reply over HTTP on localhost:8080/order with a GET call and timeout for 60 seconds */ @Bean public HttpClient statusHttpClient() { return CitrusEndpoints.http() .client() .requestUrl("http://localhost:8080/order") .requestMethod(HttpMethod.GET) .contentType("text/xml") .timeout(60000L) .build(); } /** * ActiveMQ jms connection factory depends on embedded message broker. * Setup the JMS connection factory to use for integration test * we will embed an ActiveMQ broker */ @Bean @DependsOn("jmsMessageBroker") public ActiveMQConnectionFactory jmsConnectionFactory() { return new ActiveMQConnectionFactory(jmsBrokerUrl); } /** * ActiveMQ message broker as embedded service. */ @Bean public BrokerService jmsMessageBroker() throws Exception { XBeanBrokerService messageBroker = new XBeanBrokerService (); TransportConnector connector = new TransportConnector(); connector.setUri(new URI(jmsBrokerUrl)); messageBroker.addConnector(connector); messageBroker.setStart(true); messageBroker.setUseJmx(false); messageBroker.setPersistent(false); return messageBroker; } }