Red Hatソフトウェアエンジニアの佐藤匡剛です。
昨晩のRHTN #2にお越しいただいた皆様、ありがとうございました。自分が担当したLTのスライドはこちらにアップロードしました。
www.slideshare.net
しかし、さすがに5分というのはちょっと話し足りなかった(かつ最近は引き篭もっていて滑舌悪く上手く話せなかった)ので、こちらで少し補足したいと思います。
Camel 3の注目ポイント
今回のLTの目玉だったので、スライドをそのまま再掲します。
- 後方互換性の維持
- camel-core の軽量&モジュール化
- API 整理&技術負債の解消
- 型安全な Fluent Builder エンドポイント定義の導入
- 新しいクラウド EIP パターン
- Quarkus エクステンション
- Camel-K (前回 RHTN の元ネタ)
- Java 11 サポート
- タイムボックスリリース
- 新しいウェブサイト/ドキュメント
後方互換性の維持
なるべくCamel 2ベースのアプリを壊さないように、とはいえ、やはりメジャーアップグレードなのでそれなりに変わります。Camel 2 -> 3のマイグレーションガイドは以下になります。
すでにCamel 3.0.0 M2がリリースされていますので、興味ある方はこのガイドをたよりにさっそくCamel 3を試してみましょう!
Fluent Builderエンドポイント
この時点で4分の鐘が鳴ってしまい、あせってほとんどお話できなかったのですが、Camel 3の注目機能の1つになるかなと思います。
元々、昨年のブログでAkka / AlpakkaとCamelを比較するという記事が界隈で少し話題になったことがあって、その中でAkka / Alpakkaとの比較で「Camelは全然型安全じゃないじゃん!」と煽られたことがありました(笑)。
それに対するCamelコミュニティからの返答が、このFluent Builderエンドポイントになります。これまでのCamelは、エンドポイントURLがすべてテキストベースでコンパイル時の型チェックが出来なかったのですが(一応、その代わりIDEのプラグインでパラメータをチェックしてくれるツールが豊富に揃っています)、
from("file:inbox?recursive=true&withDelay=2000") .to("jms:queue:cheese?withTimeToLive=5000");
それをこのようにメソッドチェーンでも定義できるようにしよう、というものです。
from(file("inbox").recursive().withDelay(2000)) .to(jms("cheese").withTimeToLive(5000));
こうすると、IDEのコード補完でより簡単にエンドポイント定義ができるようになるだけでなく、パラメータの型チェックまで出来るのでより安全かつ便利になります。
しかし、来月リリース予定のM3ではまだこの機能は完成しておらず、かなり大変な作業が残っているはずなので、本当にGAリリースまでに載ってくるのかちょっと心配ではあります。
Camel meets Quarkus
最後に、デモでチラッとだけお見せしたQuarkusエクステンションの話をちょっとだけしたいと思います。
Quarkusについては、須江さんのLTで紹介もあったようにまずはGet Startedガイドから始めてみるといいと思います。
Quarkusは基本的にMaven(またはGradle)コマンドを使って開発していくんですが、以下のMavenコマンドで現在サポートされているエクステンションのリストを見ることができます。
$ mvn quarkus:list-extensions ... Current Quarkus extensions available: Status Extension ArtifactId Updated Version Guide ... current Camel Core quarkus-camel-core 0.15.0 Camel Infinispan quarkus-camel-infinispan Camel Netty4 HTTP quarkus-camel-netty4-http Camel Salesforce quarkus-camel-salesforce ...
見ての通り現時点ではまだ4つのCamelコンポーネントに対してしかエクステンションがありません。これをGAまでにもっと拡充させていく予定です。とはいえ、camel-coreとHTTP(camel-netty4-http)だけでもある程度のことは出来るので、現時点でもそれなりに遊ぶことはできます。
QuarkusアプリにCamelのエクステンションを追加するには、以下のMavenコマンドを実行します。
$ mvn quarkus:add-extension -Dextensions="quarkus-camel-core"
LTで紹介したCamel + Quarkusデモのソースコードはこちらです。