Recommended
PDF
Jjug 20140430 gradle_intro
PDF
20140329_kyon_kao_wedding_LT_Groovy
PDF
PDF
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
PDF
Gws 20141024 gradle_intro
PDF
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
PDF
PDF
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
PDF
Git勉強会 2016 Gitで卒論を管理しよう回
PDF
PDF
PPT
PDF
PDF
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
PDF
PDF
PDF
ヒカルのGo 資料 Webアプリケーションの作り方
PDF
PDF
PDF
PDF
(IDEユーザのための) ClojureのEmacs開発環境について
PPTX
PDF
PDF
PPTX
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
KEY
Bundler kanazawa.rb meetup #2 2012/09/19
PPTX
PPTX
やさしいGitの内部構造 - yapcasia2013
PDF
PDF
G*workshop 2011/11/22 Geb+Betamax
More Related Content
PDF
Jjug 20140430 gradle_intro
PDF
20140329_kyon_kao_wedding_LT_Groovy
PDF
PDF
第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み
PDF
Gws 20141024 gradle_intro
PDF
わしわし的おすすめ .gitconfig 設定 (と見せかけて実はみんなのおすすめ .gitconfig 設定を教えてもらう魂胆) #広島Git 勉強会
PDF
PDF
buddyのユーザ認証周りのデータ構造 - 使われているデータの取り回しについてのお話
What's hot
PDF
Git勉強会 2016 Gitで卒論を管理しよう回
PDF
PDF
PPT
PDF
PDF
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
PDF
PDF
PDF
ヒカルのGo 資料 Webアプリケーションの作り方
PDF
PDF
PDF
PDF
(IDEユーザのための) ClojureのEmacs開発環境について
PPTX
PDF
PDF
PPTX
シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
KEY
Bundler kanazawa.rb meetup #2 2012/09/19
PPTX
PPTX
やさしいGitの内部構造 - yapcasia2013
Viewers also liked
PDF
PDF
G*workshop 2011/11/22 Geb+Betamax
PPT
20111031 MobileWeb at TDC
PDF
PPTX
JJUG CCC 2011 Fall / Web test automation with Geb and Spock
PDF
PDF
Light and shadow of microservices
PDF
JSUG20171027-spfingboot-k8s-ocp
Similar to Gws 20140418 camel_groovy
PDF
PPT
第4回勉強会 Groovyの文法からSpockまで
PDF
Groovy base gradle_20130309
PDF
Gws 20130315 gradle_handson
PPTX
Talend StudioでRoute(Apache Camel)を試す ~ファイルやメッセージキューなどを利用したESBによる連携~
PDF
Groovy Bootcamp 2015 by JGGUG
PDF
PDF
G* Workshop in Fukuoka - Introduction
PPT
PDF
PDF
PPT
G*workshop sendai 20100424(v2)
PPTX
Letsgo sendai nobusue_20110528
PDF
PDF
PDF
PDF
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
PPT
PDF
Groovy Grails eXchage 2014 報告
More from Nobuhiro Sue
PDF
Fuse Online Hands-on Guide
PDF
Fuse Online Hands-on Guide
PDF
PDF
JTF2018_B30_k8s_operator_nobusue
PDF
DevLove k8s nobusue 20180711
PDF
PDF
Gws 20131018 vertx_handson(updated)
PDF
PDF
Letsgo developer 2012 Continuous Delivery
PPTX
PPTX
DevSummit2011JGGUG OpenJam: Groovy
PPTX
G*workshop 20101209 OSGi and Grails2.0
PPTX
DevLOVE 20100823 EnterpriseOSGi
PPTX
Gws 20140418 camel_groovy 1. 2. 2
自己紹介
須江 信洋(すえ のぶひろ)
Twitter: @nobusue
https://www.facebook.com/nobuhiro.sue
約10年ほどJavaEE関連の仕事をしてます
2013年10月よりフリーランス(個人事業主)
最近興味を持っているもの
Vert.x / Storm / Camel / Elasticsearch
Vagrant / Docker / Ansible / Serverspec
もちろんGroovy / Gradle / Grails
Gradle本
(執筆中)
3. 3
JGGUGって?
Japan Grails/Groovy User Group
2009年発足
Grails/GroovyなどのGroovyエコシステム(G*)に
関するコミュニティ
前身は2006年から活動していたGrailsコミュニティ
こわくない
毎月第3金曜日にG*ワークショップを開催
参加型(ハンズオンなど)
告知・申し込みはこちら
http://jggug.doorkeeper.jp/
http://www.jggug.org/
4. 4
Today’s Agenda
Groovyインストール
Apache Camel概要
EIP(Enterprise Integration Patterns)
Camelのアーキテクチャ
Camel+Groovyハンズオン
File
DB / JMS
Timer / VM
Twitter / Elasticsearch
参考情報
5. 6. 6
Groovyインストール
前提
JDK1.7以上 (“java –version”で確認)
GVM利用
curl -s get.gvmtool.net | bash
gvm install groovy
詳細は http://gvmtool.net/ 参照
Windowsの場合はcygwinが必要
ZIPを展開
http://groovy.codehaus.org/Download
安定版は2.2.2が最新(2014/4/17現在)
適当なディレクトリに展開 ($GROOVY_HOME)
$GROOVY_HOME/bin にパスを通しておく
7. 8. 8
Apache Camel 概要
汎用的なシステム統合フレームワーク
Enterprise Integration Pattens(EIP)
EIP本が先にあり、その実装を提供する目的とか?
OSS(Apache2.0ライセンス)
Javaで実装、軽量(組み込み利用も可)
DSLでルーティング・メディエーションを定義
Java/Spring/Scala/Groovyなど豊富なDSL
豊富な連携先(100以上?)
https://camel.apache.org/
9. 10. 10
Enterprise Integration Patterns
以下の分類でパターンを整理
Integration Styles (File/DB/RPC/Messaging)
Messaging Systems
Messaging Channels (P2P/PubSub/Bus)
Message Construction (要求応答/Corr.)
Message Routing (CBR/Splitter/Aggregator)
Message Transformation (Envelope/Filter)
Messaging Endpoints (GW/Polling/Dispatcher)
System Management
11. 12. 12
Component / Endpoint
Component
連携先ごとに用意された実装部品
Endpoint
CamelからComponentに連携するための
インターフェース
Component固有のURI(URL)を定義
例) file://, twitter://
13. 14. 14
Apache Camel 利用方法
基本
何らかの手段でCamelのライブラリを入手
CamelContextのインスタンスを作る
RouteBuilderでメディエーションを定義
contextにメディエーションを追加
context.start()
具体的にはこのへんを参照
http://acro-engineer.hatenablog.com/entry/2013/11/27/112423
http://sourceforge.jp/projects/cameluserjp/wiki/%E5%88%9D%
E3%82%81%E3%81%A6%E3%81%AECamel
https://camel.apache.org/
15. 16. 16
ハンズオン
Hello Camel (File to File)
Timer
DB(SQL)
SEDA / VM
Test
(Twitter -> Elasticsearch)
スクリプト以外の実行方法(Gradle)
17. 18. 18
Hello Camel
適当な作業ディレクトリを作成
サンプル: helloCamel
”FileCopierWithCamel.groovy”を作成
実行
groovy FileCopierWithCamel.groovy
data/inbox/ 以下にファイルを置いてみる
ログが出力され、
data/outbox/ 以下にファイルがコピーされる
60秒後に停止
19. 20. 20
実行結果
[main] INFO org.apache.camel.component.file.FileEndpoint - Endpoint is
configured with noop=true so forcing endpoint to be idempotent as well
[main] INFO org.apache.camel.component.file.FileEndpoint - Using default
memory based idempotent repository with cache max size: 1000
[main] INFO org.apache.camel.impl.DefaultCamelContext - Route: route1
started and consuming from: Endpoint[file://data/inbox?noop=true]
[main] INFO org.apache.camel.impl.DefaultCamelContext - Total 1 routes,
of which 1 is started.
[main] INFO org.apache.camel.impl.DefaultCamelContext - Apache Camel
2.13.0 (CamelContext: camel-1) started in 0.541 seconds
[Camel (camel-1) thread #0 - file://data/inbox] INFO camelLogger –
Exchange[ExchangePattern: InOnly, BodyType:
org.apache.camel.component.file.GenericFile, Body: [Body is file based:
GenericFile[test.txt]]]
21. @Grab ???
Groovyの言語機能の一つ
スクリプト中に記述するだけで以下を実行
Mavenリポジトリ等からのライブラリ取得
クラスパスへの追加
(必要に応じてキャッシュ)
Grapeという管理用コマンドもあり
Apache Ivyを利用して実装されている
22. 23. 24. 24
DBセットアップ
def db = new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.DERBY)
.addScript("create.sql")
.build()
def reg = new SimpleRegistry()
reg.put("myDS", db)
Camelから利用するため、
Datasourceをレジストリに
登録しておく
(JNDIでも可)
25. 25
SQL実行 / ダンプ出力
context.addRoutes(new RouteBuilder() {
public void configure() {
from("timer://jdkTimer?period=1000")
.setBody(constant("select * from projects"))
.to("jdbc:myDS")
.process(new Processor() {
def void process(Exchange exchange) {
def body = exchange.getIn().getBody()
def newBody = []
body.each{ newBody << "${it.toString()}" }
exchange.getIn().setBody(newBody.join("¥n"))
}
}).to("file:dump")
}
})
Processor()を利用して
自由に処理できる
(TypeConverterは面倒)
http://camel.apache.org/processor.html
26. 27. 27
Test支援Component
Direct ( direct:/ )
同期型endpoint
イベントを与えないと動かない
Mock ( mock:/ )
イベントの履歴を記録・検証可能なendpoint
Test ( test:/ )
プル型のテストを実施するためのendpoint
Mockを継承
DataSet ( dataset:/ )
endpointへの入力データ
テスト時の検証データ
28. 28
Twitter -> Camel -> ES (未完成)
https://github.com/nobusue/camel-groovy/tree/master/twitter-
elasticsearch
context.addRoutes(new RouteBuilder() {
public void configure() {
from("twitter://search?type=direct&keywords=camel"+
"&consumerKey=xxxx"+
"&consumerSecret=xxxx"+
"&accessToken=xxxx"+
"&accessTokenSecret=xxxx")
.marshal().json(JsonLibrary.Jackson)
.to("elasticsearch://elasticsearch?operation=INDEX"+
"&indexName=twitter&indexType=tweet")
}
})
29. 29
スクリプト以外の実行方法
ビルド⇒JAR化してスタンドアロン実行
Camel Maven Archetypes
http://camel.apache.org/camel-maven-archetypes.html
Gradleテンプレート
https://github.com/nobusue/camel-groovy/tree/master/gradle-template
Webコンテナに組み込む
Servlet Tomcat Example
https://camel.apache.org/servlet-tomcat-example.html
Grails: Apache Camel Plugin
http://www.grails.org/plugin/routing
30. 30
Camelを拡張する
Java(Groovy)クラスを直接利用
Bean Component (bean://)
JNDIに登録したクラスのメソッドが実行可能
詳しくはこちら
http://camel.apache.org/bean.html
独自Componentを実装
詳しくはこちら (すいませんちゃんと読んでないです・・)
http://camel.apache.org/writing-components.html
31. 31
Apache Camelの情報源
本家
http://camel.apache.org/documentation.html
日本Apache Camelユーザ会
http://sourceforge.jp/projects/cameluserjp/
Apache Camel入門
http://acro-engineer.hatenablog.com/entry/2013/11/27/112423
Apache Camel Wiki
http://wiki.buildria.com/camel/start
Camel In Action の1章の適当邦訳
http://etc9.hatenablog.com/entry/20110422/1303450895
32. Apache Camelの書籍
Camel in Action
http://www.manning.com/ibsen/
Apache Camel Developer's Cookbook
http://www.packtpub.com/apache-camel-developers-
cookbook/book
Instant Apache Camel Message Routing
http://www.packtpub.com/apache-camel-message-
routing/book
Instant Apache Camel Messaging System
http://www.packtpub.com/apache-camel-messaging-
system/book
http://camel.apache.org/books.html
_人人人人人人人人人人人人_
> 日本語書籍がなかったッ <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
33.