詳細代碼
POM.xml
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jos.apache.camel</groupId>
<artifactId>camel</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>camel</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.12.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-http</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jetty</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>2.19.2</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-quartz</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
<version>2.17.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring-redis</artifactId>
<version>2.17.0</version>
</dependency>
</dependencies>
</project>
HTTP route simple
package com.jos.apache.camel;
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class CamelHttp {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("jetty:http://localhost:8976/aaa")
.to("http://localhost:8975/testInOutComp?bridgeEndpoint=true&throwExceptionOnFailure=false");
}
});
context.setTracing(true);
context.start();
Thread.sleep(Integer.MAX_VALUE);
context.stop();
}
}
HTTP process
package com.jos.apache.camel;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.http.common.HttpMessage;
import org.apache.camel.impl.DefaultCamelContext;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class CamelHttp5 {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
// errorHandler(deadLetterChannel("stream:out"));
from("jetty:http://localhost:8976/ddd").process(new Processor() {
public void process(Exchange exchange) throws Exception {
HttpMessage in = exchange.getIn(HttpMessage.class);
Object inBody = in.getBody(String.class);
JSONObject inJson = JSON.parseObject(inBody.toString());
String queryString = in.getHeader(Exchange.HTTP_QUERY, String.class);
Map<String, String> map = Stream.of(queryString.split("&")).map(obj -> obj.split("="))
.collect(Collectors.toMap(entry -> entry[0], entry -> entry[1]));
System.out.println("jetty-exchange =" + exchange);
System.out.println("jetty-in =" + in);
System.out.println("jetty-inBody =" + inBody);
System.out.println("jetty-inJson=" + inJson);
in.setHeader(Exchange.HTTP_QUERY, "params=88889966");
inJson.put("addByProcess", "jetty-process");
in.setBody(JSON.toJSONString(inJson));
exchange.setIn(in);
}
}).to("http://localhost:8975/getParam?bridgeEndpoint=true&throwExceptionOnFailure=false")
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
Message in = exchange.getIn();
Object inBody = in.getBody(String.class);
System.out.println("http-exchange =" + exchange);
System.out.println("http-in =" + in);
System.out.println("http-inBody =" + inBody);
in.setBody(inBody + "----add by http-Processor");
exchange.setIn(in);
}
});
}
});
context.setTracing(true);
context.start();
Thread.sleep(Integer.MAX_VALUE);
context.stop();
}
}
Redis sample
package com.jos.apache.camel;
import java.util.Date;
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.SimpleRegistry;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.serializer.StringRedisSerializer;
public class CamelResis2 {
public static void main(String[] args) throws Exception {
JedisConnectionFactory connectionFactory = new JedisConnectionFactory(); // 創建connectionFactory
connectionFactory.setHostName("192.168.1.1");
connectionFactory.setPassword("password");
connectionFactory.setPort(6379);
connectionFactory.setDatabase(8);
SimpleRegistry registry = new SimpleRegistry();
connectionFactory.afterPropertiesSet(); // 必須要調用該方法來初始化connectionFactory
registry.put("connectionFactory", connectionFactory); // 註冊connectionFactory
registry.put("serializer", new StringRedisSerializer()); // 註冊serializer
CamelContext context = new DefaultCamelContext(registry);
context.addRoutes(new RouteBuilder() {
public void configure() {
errorHandler(deadLetterChannel("stream:out"));
from("timer://foo?fixedRate=true&period=1000").setHeader("CamelRedis.Command", constant("SET"))
.setHeader("CamelRedis.Key", constant("keyOne"))
.setHeader("CamelRedis.Value", constant(new Date().toString()))
.to("spring-redis://192.168.1.1:6379?connectionFactory=#connectionFactory&serializer=#serializer");
}
});
context.setTracing(true);
context.start();
Thread.sleep(Integer.MAX_VALUE);
context.stop();
}
}