apache.camel_Apache Camel 2.16发布–十大亮点
apache.camel
Apache Camel 2.16于上周五發(fā)布。 這篇博客文章是我嘗試在此新版本中進行前10名(加1作為獎勵)的亮點。
1.動態(tài)到
來自駱駝用戶的最常見的常見問題是,如何將消息發(fā)送到端點,uri應該使用消息中的動態(tài)值(例如標頭)。
在此發(fā)行版之前,答案將是收件人列表EIP。
但是,為了簡化此操作,我們在DSL中引入了動態(tài)功能,該功能使用簡單語言來動態(tài)計算端點uri,并將消息發(fā)送到該端點。 對于更高級的用例,答案仍然是收件人列表,因為它可以并行發(fā)送到多個端點,并且可以進行聚合等等。
因此,常見問題解答中的示例 :
.to("freemarker://templateHome/${body.templateName}.ftl")收件人列表的解決方案在哪里:
.recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))現在可以使用toD輕松完成:
.toD("freemarker://templateHome/${body.templateName}.ftl")在XML DSL中,您可以使用:
我們將toD和toD故意分開。 因為前者允許Camel知道它的靜態(tài)端點進行優(yōu)化,而后者則是動態(tài)的。
在其他一些EIP(例如WireTap)和rest-dsl中也支持dynamic to。
2. Enrich和PollEnrich現在支持動態(tài)端點。
由于toD的新動態(tài),它為將其引入到Content Enricher EIP中以實現rich和pollEnrich取得了進展。 多年來,這一直受到大眾的需求,但最初計劃是作為Camel 3.0的更改。 通過支持URI中的簡單語言,這與toD一樣。
一個小例子:
from("direct:start").enrich().simple("http:myserver/${header.orderId}/order").to("direct:result");注意我們如何使用$ {header.orderId}來引用標題。
3.所有包含組件的文檔
在此版本中,我們有199個組件(有些是ftp sftp等的變體)。 對于每個選項,您都可以在組件上進行配置,或者使用Javadoc記錄了端點。
然后在構建過程中提取該文檔,使其在運行時可用,您可以使用Java API,JMX或Camel命令進行訪問 。
我們也已經開始為每個選項貼標簽(認為是標簽/徽章)的過程,以便您可以查看該選項是否適用于消費者,生產者,安全性,高級等。 這是一個持續(xù)的過程,但是我們對具有最多選項的組件執(zhí)行了此操作。
這是我們從Camel 2.12開始就一直努力的延續(xù)。 先前的Camel 2.15版本有很多文檔, 我已經在其中寫過博客 。 使用Camel 2.16,我們現在可以100%覆蓋文檔,并且在構建過程中啟用了驗證檢查,如果沒有文檔,則選件將失敗。
借助此功能工具(例如hawtio),可以美化UI來顯示有關Camel應用程序的信息,如下所示:
hawtio在運行時端點屬性中顯示了其配置方式。 選項分組在選項卡中。
4.更深入的JMX統計信息
我們已經對所有EIP進行了大修,以提供有關EIP的更多運行時統計信息。 例如,基于內容的路由器現在允許列出所有謂詞,并細分這些謂詞中使用最多的謂詞。 負載均衡器EIP還會公開統計信息,例如其當前狀態(tài),異常觸發(fā)次數最多等。 這適用于所有各種EIP。 此外,還公開了EIP的配置。
我們還設法使您的自定義Camel組件或Java Bean混入其自定義JMX屬性和操作,以及來自Camel的標準屬性/操作集。 在此之前,這是不可能的,只有您才能使用。 我以前曾對此寫過博客 。
5.傳入和傳出端點
現在,我們在端點注冊表中跟蹤所有傳入和傳出端點。 可從Java,JMX和Camel命令訪問注冊表。 注冊表還跟蹤每個端點的使用頻率,因此您可以知道哪個端點使用得最多。
我以前曾在博客上對此進行過介紹 ,并錄制了一段視頻來演示這一點。
6.純Java中的Swagger 2.0
swagger組件已作為新的camel-swagger-java模塊移植到Java,并已升級到swagger 2.0規(guī)范。 我們還將camel-swagger-java集成到rest-dsl中,并且能夠使用所選的選定HTTP組件。 因此,如果您將jetty與rest-dsl結合使用,則swagger模塊可以重用該模塊,以通過HTTP公開api文檔。 不建議使用基于Scala的舊模塊,并且只能使用servlet公開api文檔。
我以前在博客上對此進行過記錄,并錄制了有關此操作的視頻。
7. rest-dsl的改進
現在,您可以為其余服務的參數映射,查詢參數,路徑,正文等配置文檔。
您可以從Apache Camel附帶的一個小示例中找到更多詳細信息。
8.腳本DSL
我們在DSL中引入了專用腳本 ,以允許在路由過程中執(zhí)行腳本,默認情況下,該腳本不會修改您的消息。 我們發(fā)現許多用戶想要這樣做,但是在使用語言組件和記住設置transform = false時有些痛苦。 使用腳本DSL,它在路由中脫穎而出。
一個運行一些常規(guī)腳本的小例子
<route><from uri="file://inbox"/><script><groovy>// some groovy code goes here</groovy></script><beanRef ref="myServiceBean" method="processLine"/></route>9.啟用參數綁定后,駱駝代理更易于使用
如果您使用Camel代理將中間件隱藏在接口后面,則在調用接口上的方法時,現在可以預先執(zhí)行參數綁定。 我們發(fā)現這更直觀,并且可以像使用Bean組件一樣從消息正文/標題等映射到這些參數。
在Camel proxy上查看更多詳細信息。
10.其他一些很棒的新東西
文件使用者現在支持使用冪等的讀取鎖定模式。 這樣可以安全地使群集文件使用方在同一文件上競爭共享文件系統,以確保由選擇的冪等存儲庫(例如使用hazelcast)控制排他的讀取鎖定。
我們還提供了Maven原型,用于使用spring-boot和cdi創(chuàng)建微服務風格。
聚合器支持預完成模式,該模式允許傳入消息完成上一個組并以其自身作為第一條消息來啟動新組。
11.更多組件
有12個新組件和3個新數據格式。
- camel-paho –使用Eclipse Paho客戶端進行MQTT消息傳遞
- camel-pdf –用于創(chuàng)建PDF文檔
- camel-grape –允許您在CamelContext運行時獲取,加載和管理其他jar。
- camel-slack –允許您連接到Slack的實例,并通過預先建立的Slack傳入Webhook傳遞包含在消息正文中的消息。
- camel-jolt –用于從JSON到JSON的轉換
- camel-aws-ec2 –為Amazon Web Services EC2提供支持的組件
- camel-undertow –要將Undertow用作HTTP服務器或客戶端。
- camel-git –通用Git組件
- camel-sjms – SJMS Batch是用于從JMS隊列高效執(zhí)行事務性批處理消耗的專用組件
- camel-http-common –一個通用的基本組件,可在我們擁有的所有各種HTTP組件之間重用。
- camel-swagger-java –一個基于Java的純Swagger組件。
- camel-elsql –使用ElSql定義SQL查詢的擴展SQL組件
- camel-jbpm –通過kie-remote-client API將消息發(fā)送到jBPM。
例如,有一個通用的git組件,一個用于輸出PDF文檔的pdf組件,以及一個新的批處理JMS組件,該組件允許對X條JMS消息進行批處理并將它們聚合為單個消息,所有這些都在事務邊界之內。
有關此發(fā)行版中更改的詳細列表,請參見Camel 2.16發(fā)行說明 。 與往常一樣,當您從較早的Camel版本進行升級時,請務必閱讀升級時要考慮的重要更改部分。
翻譯自: https://www.javacodegeeks.com/2015/10/apache-camel-2-16-released-top-10-highlights.html
apache.camel
總結
以上是生活随笔為你收集整理的apache.camel_Apache Camel 2.16发布–十大亮点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台式电脑功耗(台式电脑功耗计算)
- 下一篇: 甘肃天水旅游景点大全(天水最值得去的九大