`

将Camel路由使用Beanshell来执行的话...

阅读更多

将Camel路由使用Beanshell来执行的话:将需要编译 的路由部分,很轻松的延迟到执行期 才解析。

很简单的一步,提供了一种思路:以一种更动态的形式构造路由

 

进而,可以编写一个动态解析"由Java DSL编写的Camel路由脚本 "并展示为图形的Eclipse插件..........

 

 

route.bsh脚本内容:

 

class MockRouteBuilder extends org.apache.camel.builder.RouteBuilder{
            public void configure() {
                // START SNIPPET: example
                from("direct:start").setBody(body().append(" World!")).to("mock:result");
                // END SNIPPET: example
            }
}

context.addRoutes(new MockRouteBuilder());

 

TestCase:

 

 

public class TransformViaDSLTest extends ContextTestSupport {
	protected MockEndpoint resultEndpoint;

	public void testSendingAMessageUsingMulticastReceivesItsOwnExchange()
			throws Exception {

		Interpreter interpreter = new Interpreter();
		interpreter.set("context", context);
		interpreter.eval("e:\\route.bsh");

		startCamelContext();

       	resultEndpoint.expectedBodiesReceived("Hello World!");
		sendBody("direct:start", "Hello");resultEndpoint.assertIsSatisfied();
	}

	@Override
	protected void setUp() throws Exception {
		super.setUp();

		resultEndpoint = getMockEndpoint("mock:result");
	}

}

 

------------------------------------------------------------------------------------------------------------------------------

 

这样也行:

		Interpreter interpreter = new Interpreter();

		interpreter.set("context", context);

		String test = "class MockRouteBuilder extends org.apache.camel.builder.RouteBuilder{"
				+ "\n"
				+ "public void configure() {"
				+ "\n"
				+ "from(\"direct:start\").setBody(body().append(\" World!\")).to(\"mock:result\");"
				+ "\n"
				+ "}"
				+ "\n"
				+ "}"
				+ "\n"
				+ "context.addRoutes(new MockRouteBuilder());";
		System.out.println(test);
		BufferedReader bufferedreader = new BufferedReader(new StringReader(
				test));
		interpreter.eval(bufferedreader);
 
分享到:
评论
2 楼 yin_bp 2009-06-25  
有很多jdk1.5的问题还是可以通过修改脚本来实现的
1 楼 jmszhang 2008-07-17  
好像BeanShell也挺让人失望的!
(1)JDK1.5的很多特性不大支持。
(2)在脚本中引用的类。

更复杂的。好多好多。
  
我还在想,有了beanshell,还要什么asm、cglib啊

原来如此。
可恶的java没有足够的动态性!

相关推荐

    亲测好用——Apache Camel简介以及使用场景.pptx.zip

    - **处理器(Processors)**:在路由中,可以添加处理器来执行特定操作,如转换消息内容、过滤或聚合数据。 - **数据转换(Data Formatting)**:Camel 支持多种数据格式,如 XML、JSON、CSV,可方便地进行数据...

    apache-camel-2.0-M2.tar.gz

    Apache Camel 是一个流行的开源企业集成库,它提供了一种简单且声明式的模型来定义和执行企业应用程序集成(EAI)的路由和转换规则。在标题中提到的 "apache-camel-2.0-M2.tar.gz" 是 Apache Camel 的一个特定版本,...

    apache-camel-2.7.3-src.tar.gz

    通过这个源代码包,开发者可以学习到如何使用 Camel 的 API 创建和管理路由,如何集成其他系统,以及如何利用 Camel 的组件和策略来优化集成性能。同时,也可以了解 Camel 如何处理异常,进行错误恢复,以及如何利用...

    apache-camel-2.0-M3.tar.gz

    2. **conf**: 配置文件,如camel.properties,用户可以在此配置Camel实例的参数。 3. **lib**: 重要的jar文件,这些是Camel运行所依赖的库,包括Camel核心库和其他第三方库。 4. **docs**: 文档,包括API参考、用户...

    apache-camel-2.6.0-src.tar.gz

    1. **路由引擎**:Camel的核心是它的路由引擎,它基于EIP(Enterprise Integration Patterns)设计,使得开发者可以使用简单的DSL(Domain Specific Language)来定义路由规则,如Java、XML或Groovy。 2. **组件...

    apache-camel-1.6.4-src.tar.gz

    1. **路由引擎**:Camel 的路由引擎负责解析和执行路由规则,确保消息正确地从源头传输到目的地。 2. **组件支持**:1.6.4 版本可能包含了多种预定义的组件,用于与各种系统和服务交互,如文件系统、数据库、Web服务...

    apache-camel-2.4.0-src.tar.gz

    Apache Camel 是一个强大的开源集成框架,它允许开发者以声明式的方式定义业务流程和路由规则,使得构建企业级应用变得更加简单。这个"apache-camel-2.4.0-src.tar.gz"文件是Apache Camel 2.4.0版本的源代码压缩包,...

    apache-camel-1.1.0-src.tar.gz

    Apache Camel 是一个流行的开源企业集成库,它提供了一种简单且声明式的模型来定义和执行企业集成模式。这个"apache-camel-1.1.0-src.tar.gz"文件是Apache Camel 1.1.0版本的源代码压缩包,对于开发者而言,源代码...

    apache-camel-2.7.2-src.tar.gz

    Apache Camel 是一个流行的开源集成框架,它提供了一种声明式的方式来构建企业级应用程序的路由和消息处理。在本文中,我们将深入探讨 `apache-camel-2.7.2-src.tar.gz` 文件,这是一个包含了 Apache Camel 源代码的...

    PyPI 官网下载 | camel-converter-1.0.2.tar.gz

    例如,`my_variable_name`可以转换成`myVariableName`,这对于将Python代码与JavaScript或者其他使用驼峰式命名的代码集成非常有帮助。 2. **从camelCase到snake_case**: 反之,该库也支持将驼峰式命名转换为...

    apache-camel-1.2.0-src.tar.gz

    Apache Camel 是一个强大的开源企业集成库,它提供了一种模型化的路由和消息处理方式,使得开发者可以使用统一的API来构建复杂的企业级应用程序。在"apache-camel-1.2.0-src.tar.gz"这个压缩包中,包含了Apache ...

    apache-camel-2.0-M3-src.tar.gz

    Apache Camel 是一个强大的开源企业集成库,它提供了一种模型化的路由和消息处理方式,使得开发者可以使用统一的API来构建复杂的企业级集成解决方案。这个压缩包 "apache-camel-2.0-M3-src.tar.gz" 包含的是Apache ...

    apache-camel-2.7.4-src.tar.gz

    标签:apache-camel-2.7.4-src.tar.gz,apache,camel,2.7.4,src.tar.gz包下载,依赖包

    apache-camel-2.7.5-src.tar.gz

    Apache Camel 是一个强大的开源集成框架,它提供了一种声明式的方式来定义路由和消息转换规则,使得构建企业级应用变得更加简单。这个"apache-camel-2.7.5-src.tar.gz"文件是Apache Camel 2.7.5版本的源代码压缩包,...

    apache-camel-2.1.0-src.tar.gz

    Apache Camel 是一个流行的开源集成框架,它提供了一种声明式的方式来构建企业级应用程序的路由和消息处理。这个压缩包 "apache-camel-2.1.0-src.tar.gz" 包含了 Apache Camel 2.1.0 版本的源代码,这对于开发者来说...

    Apache Camel中文开发使用指南.zip

    4. **错误处理与事务管理**:Camel允许设置错误处理器来捕获并处理异常,比如使用`onException()`来定义全局或特定路由的错误处理策略。此外,它还支持基于XAPolicy的事务管理,确保消息传递的原子性和一致性。 5. ...

    apache-camel-2.0-M1.tar.gz

    4. **示例**:可能会提供一些示例项目,演示如何使用Camel创建路由和处理数据。 5. **构建脚本**:如Maven的pom.xml文件,用于构建和打包Camel项目。 6. **测试资源**:用于验证Camel组件功能的测试类和配置。 使用...

    [Camel实战].(Camel.in.Action).Claus.Ibsen&Jonathan;.Anstey.文字版

    - **Routing with Camel**:阐述了如何使用Camel进行数据路由,包括基本的路由规则和策略。 ##### 2. 核心Camel (Part 2: Core Camel) ###### 2.1 数据转换 (Transforming data with Camel) - **数据转换方法**:...

    apache-camel-2.0-M1-src.tar.gz

    Apache Camel 是一个流行的开源企业集成库,它提供了一种声明式的方式来定义路由和转换数据,使得构建复杂的分布式系统变得更加简单。这个"apache-camel-2.0-M1-src.tar.gz"文件是Apache Camel 2.0 Milestone 1版本...

    Camel实战中文版第四章.pdf

    这种模式通常用于实现简单的消息到业务逻辑的转换,而无需复杂的路由逻辑。 - **应用场景**: 当消息处理逻辑相对简单且可以直接由特定的服务或bean来处理时。 - **优点**: 简化了消息处理流程,降低了系统复杂度。 - ...

Global site tag (gtag.js) - Google Analytics