晚上必看的正能量视频下载,自学seo能找到工作吗,视频直播系统 高清,淘宝客网站建站源码随着软件世界的发展#xff0c;正在开发更加复杂的系统#xff0c;这些系统必须相互集成。 它从SOA开始#xff0c;然后一直到微服务。 骆驼是我想到的第一大集成工具#xff0c;因为如今的骆驼springboot是一个非常强大的组合。 第一步是将骆驼依赖项包含到我们的sprin… 随着软件世界的发展正在开发更加复杂的系统这些系统必须相互集成。 它从SOA开始然后一直到微服务。 骆驼是我想到的第一大集成工具因为如今的骆驼springboot是一个非常强大的组合。 第一步是将骆驼依赖项包含到我们的spring项目中。 buildscript {ext {springBootVersion 1.5.9.BUILD-SNAPSHOT}repositories {mavenCentral()maven { url https://repo.spring.io/snapshot }maven { url https://repo.spring.io/milestone }}dependencies {classpath(org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion})}
}apply plugin: java
apply plugin: eclipse
apply plugin: org.springframework.bootgroup com.gkatzioura
version 0.0.1-SNAPSHOT
sourceCompatibility 1.8repositories {mavenCentral()maven { url https://repo.spring.io/snapshot }maven { url https://repo.spring.io/milestone }
}dependencies {compile(org.apache.camel:camel-spring-boot-starter:2.20.0)testCompile(org.springframework.boot:spring-boot-starter-test)testCompile(org.apache.camel:camel-test-spring:2.20.0)
} 为了从头开始更快地进行项目设置您可以始终使用在线spring 初始化程序 。 现在让我们添加一条简单的路线 package com.gkatzioura.springcamel.routes;import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;Component
public class TimerRoute extends RouteBuilder {public static final String ROUTE_NAME TIMER_ROUTE;Overridepublic void configure() throws Exception {from(timer:initial//start?period10000).routeId(ROUTE_NAME).to(log:executed);}
} 我们不必担心骆驼上下文的配置因为Camel自动配置会为您创建一个SpringCamelContext并负责该上下文的正确初始化和关闭。 骆驼自动配置还从Spring上下文中收集所有RouteBuilder实例并将它们自动注入到提供的CamelContext中。 因此我们不必注册到CamelContext的路线。 如您所见我们的路由具有一个计时器该计时器的周期为10000毫秒该计时器路由到日志端点。 日志端点将每10000毫秒打印一次执行的字符串。 请记住如果未指定routeId骆驼将自己分配一个名称因此在我们要检索根定义的情况下为我们的路线定义命名是一个好习惯。 为了使骆驼保持不动我们需要保持主线程处于阻塞状态。 因此我们将此配置添加到application.yml文件中。 camel:springboot:main-run-controller: true 代替这个我们可以包括spring-boot-starter-web依赖关系但是我们的应用程序具有尽可能少的依赖关系因此我们需要保持这种方式。 但是与其他系统集成中最困难的部分是测试。 多年来我们在测试和使用的工具方面取得了长足的进步。 骆驼还带有一些很棒的工具以便进行单元测试。 例如我们将对先前指定的路线进行测试。 RunWith(CamelSpringBootRunner.class)
SpringBootTest
public class SpringCamelApplicationTests {EndpointInject(uri MOCK_RESULT)private MockEndpoint resultEndpoint;Autowiredprivate CamelContext camelContext;EndpointInject(uri MOCK_TIMER)private ProducerTemplate producer;private static final String MOCK_RESULT mock:result;private static final String MOCK_TIMER direct:mock-timer;Beforepublic void setup() throws Exception {camelContext.getRouteDefinition(TimerRoute.ROUTE_NAME).autoStartup(true).adviceWith(camelContext, new AdviceWithRouteBuilder() {Overridepublic void configure() throws Exception {replaceFromWith(MOCK_TIMER);interceptSendToEndpoint(log*).skipSendToOriginalEndpoint().to(MOCK_RESULT);}});}Testpublic void sendMessage() throws Exception {resultEndpoint.expectedMessageCount(1);producer.sendBody(A message);resultEndpoint.assertIsSatisfied();}} 让我们看一下测试的每个部分。 我们选择的JUnit运行器将是CamelSpringBootRunner.class RunWith(CamelSpringBootRunner.class) 我们注入一个ProducerTemplate 。 通过ProducerTemplate接口您可以通过各种不同的方式将消息交换发送到端点从而可以轻松地从Java代码使用Camel Endpoint实例。 然后我们注入一个MockEndpoint。 MockEndpoint将通过替换原始端点为我们服务。 然后我们将设置预期的接收消息数。 处理完成后我们断言已满足接收消息的数量。 在我们的设置方法中我们将用伪造的生产者模板端点替换原始端点。 这样我们的路线将接收到我们将从ProducerTemplate发出的事件。 然后我们还将拦截日志端点并将消息定向到先前指定的MockEndpoint。 因此我们最终得到了骆驼应用程序和指定路线的单元测试。 您可以在github上找到源代码。 翻译自: https://www.javacodegeeks.com/2017/11/spring-boot-apache-camel.html