手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Apache Camel框架之JMS路由

[日期:2012-02-12] 来源:Linux社区  作者:kkdelta [字体: ]

继上次Camel如何在做项目集成类型的项目(见 http://www.linuxidc.com/Linux/2012-02/54002.htm )中用于从FTP取文件和传文件之后,我们在系统集成中经常遇到的另一个应用就是将数据通过JMS传到消息中间件的queue里,或者从消息中间件的queue里取消息.

本文简单的介绍和示例一个用Camel实现这样的需求:监听某一个文件夹是否有文件,取到文件后发送到另外一个系统监听的queue.

1,因为要用JMS,这里介绍一个open source的activeMQ,可以从http://activemq.apache.org/download.html 下载,下载后解压,bin目录有一个activemq.bat文件,在命令行里运行activemq 启动activeMQ,如果能从从浏览器里访问 http://localhost:8161/admin/则activeMQ成功启动了.

2,在Camel里实现上图所示的路由:JAVA项目里需要将activeMQ的jar包配置到classpath下,Java代码如下:

    private static String user = ActiveMQConnection.DEFAULT_USER;
    private static String password = ActiveMQConnection.DEFAULT_PASSWORD;
    private static String url = ActiveMQConnection.DEFAULT_BROKER_URL;
    
    public static void main(String args[]) throws Exception {        
        CamelContext context = new DefaultCamelContext();        
        ConnectionFactory connectionFactory =
            new ActiveMQConnectionFactory(user, password, url);
        context.addComponent("jms",
            JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
        System.out.println(url + " " + user + password);        
        context.addRoutes(new RouteBuilder() {
            public void configure() {                
                from("file:d:/temp/inbox").to(
                "jms:queue:TOOL.DEFAULT");
            }
        });
        context.start();
        boolean loop = true;
        while (loop) {
            Thread.sleep(25000);
        }

        context.stop();
    }

Camel会在路由的时候将文件的内容以binary message发到activeMQ的名为'TOOL.DEFAULT'的queue .

当然也可以用如下的方式发送textmessage:from("file:d:/temp/inbox").convertBodyTo(String.class).to("jms:queue:TOOL.DEFAULT");

linux
相关资讯       Apache 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款