Apache Camel - Proje
Bir Camel projesi inşa etmek için Maven'i kullanacağız. Bununla birlikte, geliştirme için IntelliJ IDE'yi tercih ediyoruz. Bu proje için seçtiğiniz herhangi bir IDE'yi kullanabilirsiniz.
Yeni Proje Oluşturma
Yeni bir tane oluştur Maven projelendirin ve aşağıdakileri belirtin -
GroupId: Basket
ArtifactId: Basket
Projeniz için varsayılan konumu seçin veya tercih ettiğiniz dizini belirtin.
Bağımlılıklar Ekleme
Camel'i kullanmak için birkaç bağımlılık eklemeniz gerekir. Bağımlılıklar eklenirpom.xml. Bu yüzden pom.xml dosyasını açın ve aşağıdaki iki bağımlılığı ekleyin -
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-stream</artifactId>
<version>2.20.0</version>
</dependency>
</dependencies>
Note- Uygulamamız için minimum bağımlılıklara ihtiyacımız var. Kitaplıklarından daha fazla Camel bileşeni kullandıkça, bu pom.xml dosyasına karşılık gelen bağımlılıkları eklemeniz gerekecektir.
Java DSL oluşturma
Ardından, filtreleme ve yönlendirme kodunuzu bir Java DSL'de yazacaksınız. Adlı yeni bir Java sınıfı oluşturunDistributeOrderDSL. Aşağıdaki kodu ekleyin -
public class DistributeOrderDSL {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
try {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:DistributeOrderDSL")
.split(xpath("//order[@product='soaps']/items")).to("stream:out");
// .to("file:src/main/resources/order/");
}
});
context.start();
ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
.getResource("order.xml").getFile());
orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);
} finally {
context.stop();
}
}
}
İçinde main yöntem, önce yaratırız CamelContext içinde sağlanan bir varsayılan uygulamayı örnekleyerek DefaultCamelContext sınıf.
CamelContext context = new DefaultCamelContext();
Ardından, anonim bir yol oluşturarak bir rota ekliyoruz. RouteBuilder örnek -
context.addRoutes(new RouteBuilder() {
Biz geçersiz kılıyoruz configure doğrudan bir URI'dan bir yol ekleme yöntemi DistributeOrderDSLsistem konsoluna. Xpath sorgusunu kullanarak bazı filtreleme sağlıyoruz.
public void configure() throws Exception {
from("direct:DistributeOrderDSL")
.split(xpath("//order[@product = 'soaps']/items")).to("stream:out");
// .to("file:src/main/resources/order/");
}
Rotayı ekledikten sonra bağlamı başlatıyoruz -
context.start();
Ardından, doğrudan URI'mızı oluşturmak için kod ekliyoruz - DistributeOrderDSL.
ProducerTemplate orderProducerTemplate = context.createProducerTemplate();
InputStream orderInputStream = new FileInputStream(ClassLoader.getSystemClassLoader()
.getResource("order.xml").getFile());
Son olarak, işlemeye başlıyoruz -
orderProducerTemplate.sendBody("direct:DistributeOrderDSL", orderInputStream);
Şimdi, Java DSL kodunuz tamamlandığında, uygulamayı test etmeden önce geriye kalan tek şey, order.xmlprojenize dosya. Bu amaçla Giriş bölümünde gösterilen örnek XML'i kullanabilirsiniz.
Test sonuçları
Uygulamayı çalıştırdığınızda, aşağıdaki çıktıyı görürsünüz -
<items>
<item>
<Brand>Cinthol</Brand>
<Type>Original</Type>
<Quantity>4</Quantity>
<Price>25</Price>
</item>
<item>
<Brand>Cinthol</Brand>
<Type>Lime</Type>
<Quantity>6</Quantity>
<Price>30</Price>
</item>
</items>
Burada yalnızca Sabun siparişlerinin listelendiğini unutmayın. Bunu yerel bir dosyada saklamak isterseniz,stream.out satırında ve aşağıdaki satırı uncomment your configure yöntem -
// .to("file:src/main/resources/order/");
Sonraki bölümümüzde Deve Yayını nasıl kullanacağımızı öğreneceğiz.