- Structure
- build.gradle
buildscript { repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE") } } apply plugin: 'java' apply plugin: 'spring-boot' repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile group: 'org.projectlombok', name: 'lombok', version: '1.16.10' compile group: 'org.apache.camel', name: 'camel-spring-boot-starter', version: '2.17.0' }
- TestRouter.java
package org.blog.test.route; import lombok.extern.slf4j.Slf4j; import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.spi.ExecutorServiceManager; import org.apache.camel.spi.ThreadPoolProfile; import org.apache.tomcat.util.threads.ThreadPoolExecutor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; @Component @Slf4j public class TestRouter extends RouteBuilder { @Override public void configure() throws Exception { from("seda:start?size=10").streamCaching().threads(10).process(exchange -> log.info("process message : [{}]", exchange.getIn().getBody())).end(); } }
- SedaApplication.java
package org.blog.test; import lombok.extern.slf4j.Slf4j; import org.apache.camel.CamelContext; import org.apache.camel.Exchange; import org.apache.camel.ProducerTemplate; import org.apache.camel.component.seda.SedaEndpoint; import org.apache.camel.spi.ThreadPoolProfile; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.PostConstruct; @SpringBootApplication @RestController @Slf4j public class SedaApplication { public static void main(String[] args) { SpringApplication.run(SedaApplication.class, args); } @Autowired private ProducerTemplate producerTemplate; @Autowired private CamelContext camelContext; @RequestMapping("/send") public String sendMessage() throws Exception { producerTemplate.sendBody("seda:start", "fewfe"); SedaEndpoint sedaEndpoint = (SedaEndpoint) camelContext.getEndpoint("seda:start"); StringBuilder builder = new StringBuilder(); for (Exchange exchange : sedaEndpoint.getExchanges()) { builder.append(exchange.getIn().getBody()); } return builder.toString(); } @PostConstruct private void init() { ThreadPoolProfile profile = new ThreadPoolProfile(); profile.setMaxPoolSize(10); profile.setDefaultProfile(true); profile.setId("customedProfile"); camelContext.getExecutorServiceManager().setDefaultThreadPoolProfile(profile); } }
- result
You can find that seda is working well.
댓글 없음 :
댓글 쓰기