Apache Camel例子

詳細代碼


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();
	}

}

 

 

發佈了71 篇原創文章 · 獲贊 159 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章