apache camel 在诗篇建站系统的应用

戈宏义
2023-12-01

要说apache camel能做什么,好像什么都能做:),它是一个庞大的系统,但应用是如此简单。诗篇建站系统在tomcat容器内使用camel。主要目的是增加系统的集成,如果不用camel,这些功能通过bash,crontab等等也可以完成,但是将这些功能代码都进入你的svn系统,在部署的时候不用在操作系统层次作修改,不是更方便吗?

诗篇建站系统只是简单的使用了camel中的少量组件.

1、timer,用来更新apache rewrite的一个map文件。

2、file,和http4,将文章的修改提交到apache solr服务器。

这是文章修改添加后的钩子。

	@PostPersist
	@PostUpdate
	public void writeSolrXML2File(){
		if(isAudit()){
			SiteConfigService scf = injector.getInstance(SiteConfigService.class);
			String fs = scf.getSorlCamelDir();
			try {
				File f = new File(fs,"article" + getId() + ".xml");
				if(!f.exists())Files.createParentDirs(f);
				Files.write(toSolrXML("add"), f , Charset.forName("UTF-8"));
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

public class SolrRouter extends RouteBuilder{
	
	@Inject
	private SiteConfigService scf;

	@Override
	public void configure() throws Exception {
    	String ff = "file://e:/xxx";
    	String url = "http4://localhost:8080/solr/update";
    	if(!Osdetecter.isWindows()){
    		ff = "file:///usr/local/xxx/yyy";
    		url = "http4://localhost:8983/solr/update";
    	}
    	from(ff).setHeader(Exchange.HTTP_QUERY, constant("commit=true")).
    		setHeader(Exchange.CONTENT_TYPE, constant("Conntent-Type: text/xml")).
    		setHeader(Exchange.HTTP_CHARACTER_ENCODING, constant("UTF-8")).
    		setHeader(Exchange.HTTP_METHOD, constant(HttpMethods.POST)).to(url);
    	
    	from("file:///home/xxx/dic?include=words-my.dic").
    		to("file:///usr/xx/xxx/apache-solr-3.2.0/xxx/solr/dic");
	}

}

下面的描述,将让你体会到camel的便利。每次文章修改或者添加(当然还有删除),将需要索引的内容写入硬盘上的某个约定目录。camel看到那里有东西,就会把这个东西搬到solr服务器去。camle可以几乎可以将东西从任何源搬到任何目的地,同步或异步。

从:文件,电子邮件服务器,数据库(sql,jpa,spring,ibits),jms,定时器信息........,太多了,写也写不完。:)


 类似资料: