Apache Camel - Bileşenler
Camel, önceden oluşturulmuş birkaç bileşen sağlar.
Bu bölümde, birkaç önemli bileşeni tartışacağız. camel-core modül.
Fasulye
Beanbileşeni, fasulyeleri Camel mesaj alışverişine bağlar. Bir Uç Nokta oluşturmak için URI şu şekilde belirtilir:bean:beanID, nerede beanID fasulyenin adıdır. Registry.
JndiContext jndiContext = new JndiContext();
jndiContext.bind("MilkOrder", new MilkOrderProcessor());
CamelContext camelContext = new DefaultCamelContext(jndiContext);
camelContext.addRoutes(new RouteBuilder() {
public void configure() {
from("direct:bigBasket")
.to("bean:MilkOrder?method=placeOrder");
}
});
Uç noktanın nasıl belirtildiğine dikkat edin. bean:protokol. İsteğe bağlı olarak çağrılacak fasulye yöntemini belirtebilirsiniz; bu durumda yöntem denirplaceOrderEndpoint ifadesi değerlendirilirken çağrılacaktır. MilkOrder JNDI adıdır MilkOrderProcessorKod pasajının ilk iki satırında kayıtlı Javabean. TanımıMilkOrderProcessor kısalık için burada kendisi ihmal edilmiştir.
Doğrudan
Kullanımını fark etmiş olmalısın Directönceki örneklerimizde. Bir petrol satıcısına sipariş göndermek içindirect:oilEndpoint spesifikasyonunda. KullanımıDirectbileşeni, bir uç noktayı eşzamanlı olarak çağırmanıza izin verir. Önceki örneklerimizden aşağıdaki iki kod parçacığı,Direct -
.when(header("order").isEqualTo("oil"))
.to("direct:oil")
Ve,
from("direct:DistributeOrderDSL")
.process(myProcessor);
Dosya
Filebileşeni, makinenizdeki dosya sistemine erişim sağlar. Bu bileşeni kullanarak, diğer bileşenlerden gelen mesajları yerel bir diske kaydedebileceksiniz. Ek olarak, diğer Camel bileşenlerinin yerel dosyaları işlemesine izin verir. Ya kullanabilirsinizfile:directoryName[?options] veya file://directoryName[?options]Dosya bileşenini kullanırken bir URI biçimi olarak. Bu bileşenin kullanımını daha önce gördünüz -
from ("file:/order").to("jms:orderQueue");
Unutmayın ki Filebileşen varsayılan olarak dizin adını alır. Bu nedenle, sipariş dizininin içeriği girdi içeriği olarak alınacaktır. İçindeki belirli bir dosyayı belirtmek içinorder dizin, aşağıdaki ifadeyi kullanacaksınız -
from ("file:/order?fileName = order.xml").to("jms:orderQueue");
Kayıt
Logbileşeni, iletileri temeldeki günlük kaydı mekanizmasına kaydetmenize olanak tanır. Camel, çeşitli günlükleme çerçevelerine bir soyutlama olarak Java için Basit Günlük Kaydı Cephesi'ni (SLF4J) kullanır. Kullanabilirsinjava.util.logging, logback, log4jgünlüğü için. Bu kod parçacığı,Log bileşen -
from("direct:DistributeOrderDSL")
.to("bean:MilkOrder?method = placeOrder")
.to("log:com.example.com?level = INFO&showBody = true");
SEDA
SEDA bileşeni, aynı anda başka bir uç noktayı eşzamansız olarak çağırmanıza olanak tanır CamelContext. CamelContext örneklerinde arama yapmak istiyorsanız, şunu kullanmanız gerekir:VMbileşen. SEDA'nın kullanımı burada gösterilmektedir -
from("direct:DistributeOrderDSL")
// send it to the seda queue that is async
.to("seda:nextOrder")
Bu rotada, siparişleri yalnızca nextOrdereşzamansız kuyruk. Bu kuyruğa abone olan bir müşteri bu kuyruktaki mesajları alacaktır.
Zamanlayıcı
Timerbileşeni, düzenli aralıklarla mesaj göndermek için kullanılır ve bu nedenle Camel uygulamalarını test ederken çok yararlı olabilir. Buradaki kod parçacığı, her iki saniyede bir konsola bir test mesajı gönderir -
from("timer://testTimer?period = 2000")
.setBody()
.simple("This is a test message ${header.timer}")
.to("stream:out");