Search in sources :

Example 46 with Consumer

use of org.apache.camel.Consumer in project camel by apache.

the class CronScheduledRoutePolicyTest method testScheduledSuspendRoutePolicy.

@Test
public void testScheduledSuspendRoutePolicy() throws Exception {
    context.getComponent("quartz", QuartzComponent.class).setPropertiesFile("org/apache/camel/routepolicy/quartz/myquartz.properties");
    context.addRoutes(new RouteBuilder() {

        public void configure() {
            CronScheduledRoutePolicy policy = new CronScheduledRoutePolicy();
            policy.setRouteSuspendTime("*/3 * * * * ?");
            from("direct:start").routeId("test").routePolicy(policy).to("mock:unreachable");
        }
    });
    context.start();
    Thread.sleep(5000);
    // when suspending its only the consumer that suspends
    // there is a ticket to improve this
    Consumer consumer = context.getRoute("test").getConsumer();
    SuspendableService ss = (SuspendableService) consumer;
    assertTrue("Consumer should be suspended", ss.isSuspended());
}
Also used : SuspendableService(org.apache.camel.SuspendableService) RouteBuilder(org.apache.camel.builder.RouteBuilder) Consumer(org.apache.camel.Consumer) QuartzComponent(org.apache.camel.component.quartz.QuartzComponent) Test(org.junit.Test)

Example 47 with Consumer

use of org.apache.camel.Consumer in project camel by apache.

the class QuartzScheduledPollConsumerJob method execute.

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    LOG.trace("Execute job: {}", context);
    CamelContext camelContext = getCamelContext(context);
    Runnable task = (Runnable) context.getJobDetail().getJobDataMap().get("task");
    if (task == null) {
        // if not task then use the route id to lookup the consumer to be used as the task
        String routeId = (String) context.getJobDetail().getJobDataMap().get("routeId");
        if (routeId != null && camelContext != null) {
            // find the consumer
            for (Route route : camelContext.getRoutes()) {
                if (route.getId().equals(routeId)) {
                    Consumer consumer = route.getConsumer();
                    if (consumer instanceof Runnable) {
                        task = (Runnable) consumer;
                        break;
                    }
                }
            }
        }
    }
    if (task != null) {
        LOG.trace("Running task: {}", task);
        task.run();
    }
}
Also used : CamelContext(org.apache.camel.CamelContext) Consumer(org.apache.camel.Consumer) Route(org.apache.camel.Route)

Example 48 with Consumer

use of org.apache.camel.Consumer in project camel by apache.

the class CronScheduledRoutePolicyTest method testScheduledSuspendRoutePolicy.

@Test
public void testScheduledSuspendRoutePolicy() throws Exception {
    context.getComponent("quartz2", QuartzComponent.class).setPropertiesFile("org/apache/camel/routepolicy/quartz2/myquartz.properties");
    context.addRoutes(new RouteBuilder() {

        public void configure() {
            CronScheduledRoutePolicy policy = new CronScheduledRoutePolicy();
            policy.setRouteSuspendTime("*/3 * * * * ?");
            from("direct:start").routeId("test").routePolicy(policy).to("mock:unreachable");
        }
    });
    context.start();
    Thread.sleep(5000);
    // when suspending its only the consumer that suspends
    // there is a ticket to improve this
    Consumer consumer = context.getRoute("test").getConsumer();
    SuspendableService ss = (SuspendableService) consumer;
    assertTrue("Consumer should be suspended", ss.isSuspended());
}
Also used : SuspendableService(org.apache.camel.SuspendableService) RouteBuilder(org.apache.camel.builder.RouteBuilder) Consumer(org.apache.camel.Consumer) QuartzComponent(org.apache.camel.component.quartz2.QuartzComponent) Test(org.junit.Test)

Example 49 with Consumer

use of org.apache.camel.Consumer in project camel by apache.

the class RestletComponent method createConsumer.

@Override
public Consumer createConsumer(CamelContext camelContext, Processor processor, String verb, String basePath, String uriTemplate, String consumes, String produces, RestConfiguration configuration, Map<String, Object> parameters) throws Exception {
    String path = basePath;
    if (uriTemplate != null) {
        // make sure to avoid double slashes
        if (uriTemplate.startsWith("/")) {
            path = path + uriTemplate;
        } else {
            path = path + "/" + uriTemplate;
        }
    }
    path = FileUtil.stripLeadingSeparator(path);
    String scheme = "http";
    String host = "";
    // use the component's port as the default value
    int port = this.getPort();
    // if no explicit port/host configured, then use port from rest configuration
    RestConfiguration config = configuration;
    if (config == null) {
        config = camelContext.getRestConfiguration("restlet", true);
    }
    if (config.getScheme() != null) {
        scheme = config.getScheme();
    }
    if (config.getHost() != null) {
        host = config.getHost();
    }
    int num = config.getPort();
    if (num > 0) {
        port = num;
    }
    // prefix path with context-path if configured in rest-dsl configuration
    String contextPath = config.getContextPath();
    if (ObjectHelper.isNotEmpty(contextPath)) {
        contextPath = FileUtil.stripTrailingSeparator(contextPath);
        contextPath = FileUtil.stripLeadingSeparator(contextPath);
        if (ObjectHelper.isNotEmpty(contextPath)) {
            path = contextPath + "/" + path;
        }
    }
    // if no explicit hostname set then resolve the hostname
    if (ObjectHelper.isEmpty(host)) {
        if (config.getRestHostNameResolver() == RestConfiguration.RestHostNameResolver.allLocalIp) {
            host = "0.0.0.0";
        } else if (config.getRestHostNameResolver() == RestConfiguration.RestHostNameResolver.localHostName) {
            host = HostUtils.getLocalHostName();
        } else if (config.getRestHostNameResolver() == RestConfiguration.RestHostNameResolver.localIp) {
            host = HostUtils.getLocalIp();
        }
    }
    Map<String, Object> map = new HashMap<String, Object>();
    // build query string, and append any endpoint configuration properties
    if (config.getComponent() == null || config.getComponent().equals("restlet")) {
        // setup endpoint options
        if (config.getEndpointProperties() != null && !config.getEndpointProperties().isEmpty()) {
            map.putAll(config.getEndpointProperties());
        }
    }
    // allow HTTP Options as we want to handle CORS in rest-dsl
    boolean cors = config.isEnableCORS();
    String query = URISupport.createQueryString(map);
    String url;
    // must use upper case for restrict
    String restrict = verb.toUpperCase(Locale.US);
    if (cors) {
        restrict += ",OPTIONS";
    }
    if (port > 0) {
        url = "restlet:%s://%s:%s/%s?restletMethods=%s";
        url = String.format(url, scheme, host, port, path, restrict);
    } else {
        // It could use the restlet servlet transport
        url = "restlet:/%s?restletMethods=%s";
        url = String.format(url, path, restrict);
    }
    if (!query.isEmpty()) {
        url = url + "&" + query;
    }
    // get the endpoint
    RestletEndpoint endpoint = camelContext.getEndpoint(url, RestletEndpoint.class);
    setProperties(camelContext, endpoint, parameters);
    // the endpoint must be started before creating the consumer
    ServiceHelper.startService(endpoint);
    // configure consumer properties
    Consumer consumer = endpoint.createConsumer(processor);
    if (config.getConsumerProperties() != null && !config.getConsumerProperties().isEmpty()) {
        setProperties(camelContext, consumer, config.getConsumerProperties());
    }
    return consumer;
}
Also used : Consumer(org.apache.camel.Consumer) HashMap(java.util.HashMap) RestConfiguration(org.apache.camel.spi.RestConfiguration) Endpoint(org.apache.camel.Endpoint)

Example 50 with Consumer

use of org.apache.camel.Consumer in project camel by apache.

the class JettyHttpComponent method doCreateConsumer.

Consumer doCreateConsumer(CamelContext camelContext, Processor processor, String verb, String basePath, String uriTemplate, String consumes, String produces, RestConfiguration configuration, Map<String, Object> parameters, boolean api) throws Exception {
    String path = basePath;
    if (uriTemplate != null) {
        // make sure to avoid double slashes
        if (uriTemplate.startsWith("/")) {
            path = path + uriTemplate;
        } else {
            path = path + "/" + uriTemplate;
        }
    }
    path = FileUtil.stripLeadingSeparator(path);
    String scheme = "http";
    String host = "";
    int port = 0;
    // if no explicit port/host configured, then use port from rest configuration
    RestConfiguration config = configuration;
    if (config == null) {
        config = camelContext.getRestConfiguration("jetty", true);
    }
    if (config.getScheme() != null) {
        scheme = config.getScheme();
    }
    if (config.getHost() != null) {
        host = config.getHost();
    }
    int num = config.getPort();
    if (num > 0) {
        port = num;
    }
    // prefix path with context-path if configured in rest-dsl configuration
    String contextPath = config.getContextPath();
    if (ObjectHelper.isNotEmpty(contextPath)) {
        contextPath = FileUtil.stripTrailingSeparator(contextPath);
        contextPath = FileUtil.stripLeadingSeparator(contextPath);
        if (ObjectHelper.isNotEmpty(contextPath)) {
            path = contextPath + "/" + path;
        }
    }
    // if no explicit hostname set then resolve the hostname
    if (ObjectHelper.isEmpty(host)) {
        if (config.getRestHostNameResolver() == RestConfiguration.RestHostNameResolver.allLocalIp) {
            host = "0.0.0.0";
        } else if (config.getRestHostNameResolver() == RestConfiguration.RestHostNameResolver.localHostName) {
            host = HostUtils.getLocalHostName();
        } else if (config.getRestHostNameResolver() == RestConfiguration.RestHostNameResolver.localIp) {
            host = HostUtils.getLocalIp();
        }
    }
    Map<String, Object> map = new HashMap<String, Object>();
    // build query string, and append any endpoint configuration properties
    if (config.getComponent() == null || config.getComponent().equals("jetty")) {
        // setup endpoint options
        if (config.getEndpointProperties() != null && !config.getEndpointProperties().isEmpty()) {
            map.putAll(config.getEndpointProperties());
        }
    }
    boolean cors = config.isEnableCORS();
    if (cors) {
        // allow HTTP Options as we want to handle CORS in rest-dsl
        map.put("optionsEnabled", "true");
    }
    String query = URISupport.createQueryString(map);
    String url;
    if (api) {
        url = "jetty:%s://%s:%s/%s?matchOnUriPrefix=true&httpMethodRestrict=%s";
    } else {
        url = "jetty:%s://%s:%s/%s?httpMethodRestrict=%s";
    }
    // must use upper case for restrict
    String restrict = verb.toUpperCase(Locale.US);
    if (cors) {
        restrict += ",OPTIONS";
    }
    // get the endpoint
    url = String.format(url, scheme, host, port, path, restrict);
    if (!query.isEmpty()) {
        url = url + "&" + query;
    }
    JettyHttpEndpoint endpoint = camelContext.getEndpoint(url, JettyHttpEndpoint.class);
    setProperties(camelContext, endpoint, parameters);
    if (!map.containsKey("httpBindingRef")) {
        // use the rest binding, if not using a custom http binding
        endpoint.setHttpBinding(new JettyRestHttpBinding(endpoint));
        // disable this filter as we want to use ours
        endpoint.setEnableMultipartFilter(false);
    }
    // configure consumer properties
    Consumer consumer = endpoint.createConsumer(processor);
    if (config.getConsumerProperties() != null && !config.getConsumerProperties().isEmpty()) {
        setProperties(camelContext, consumer, config.getConsumerProperties());
    }
    // the endpoint must be started before creating the producer
    ServiceHelper.startService(endpoint);
    return consumer;
}
Also used : Consumer(org.apache.camel.Consumer) HttpConsumer(org.apache.camel.http.common.HttpConsumer) HashMap(java.util.HashMap) RestConfiguration(org.apache.camel.spi.RestConfiguration) Endpoint(org.apache.camel.Endpoint) HttpCommonEndpoint(org.apache.camel.http.common.HttpCommonEndpoint)

Aggregations

Consumer (org.apache.camel.Consumer)76 Endpoint (org.apache.camel.Endpoint)27 Processor (org.apache.camel.Processor)19 Exchange (org.apache.camel.Exchange)18 Test (org.junit.Test)18 HashMap (java.util.HashMap)10 RestConfiguration (org.apache.camel.spi.RestConfiguration)10 Producer (org.apache.camel.Producer)7 PollingConsumer (org.apache.camel.PollingConsumer)6 File (java.io.File)5 PollingConsumerPollStrategy (org.apache.camel.spi.PollingConsumerPollStrategy)5 FileNotFoundException (java.io.FileNotFoundException)4 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)4 SuspendableService (org.apache.camel.SuspendableService)4 ArrayList (java.util.ArrayList)3 CountDownLatch (java.util.concurrent.CountDownLatch)3 CamelContext (org.apache.camel.CamelContext)3 Component (org.apache.camel.Component)3 NoSuchBeanException (org.apache.camel.NoSuchBeanException)3 Route (org.apache.camel.Route)3