SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
Get Cooking with
Apache Camel
Cookbook of Tips and Tricks
Scott Cranton
@scottcranton
•  Red Hat Middleware (technical) sales
•  Over 5 years working with Camel
–  Joined FuseSource Feb, 2009
•  https://github.com/FuseByExample
•  https://github.com/CamelCookbook
Apache Camel Developer’s Cookbook
•  100+ Recipes
•  424 pages
•  Published Dec 2013
•  Camel 2.12.2
•  https://github.com/
CamelCookbook
Why a Camel Cookbook?
•  Help beginner to intermediate users get
productive by example with follow on references
•  Break common Camel tasks into Recipes
•  Each recipe contains:
•  Introduction
•  How to do it (task oriented)
•  How it works
•  There’s more
How Do I Control Route Startup Order?
•  Introduction
–  Sometimes order matters, and routes need to start and stop in a defined order
•  How to do it
–  Set route startupOrder attribute
–  XML DSL: <route startupOrder="20" routeId="myRoute">...</route>
–  Java DSL: from("direct:in").startupOrder(20).routeId("myRoute")...;
•  How it works
–  Routes started in ascending order, and stopped in descending order
•  http://camel.apache.org/configuring-route-startup-ordering-and-autostartup.html
•  There’s more
–  You can programmatically startup and shutdown routes in response to events
•  exchange.getContext().startRoute("myRoute");
Camel Cookbook Tasting Menu
•  Route Design
•  Routing messages (EIP)
•  Transactions
•  Unit Testing
•  Monitoring
•  Calling Camel Routes
Interconnecting Routes
Camel supports breaking routes up into
re-usable sub-routes, and
synchronously or asynchronously
calling those sub-routes.
Interconnecting Routes
Within
CamelContext
Within
JVM
Synchronous direct: direct-vm:
Asynchronous seda: vm:
Interconnecting Routes
CamelContext-1
from("activemq:queue:one").to("direct:one");
from("direct:one").to("direct-vm:two");
CamelContext-2
from("direct-vm:two").log("Direct Excitement!");
–  Run on same thread as caller
–  direct-vm within JVM, including other OSGi Bundles
Direct and Direct-VM
Interconnecting Routes
CamelContext-1
from("activemq:queue:one").to("seda:one");
from("seda:one").to("vm:two");
CamelContext-2
from("vm:two").log("Async Excitement!");
–  Run on different thread from caller
–  concurrentConsumers=1 controls thread count
–  vm within JVM, including other OSGi Bundles
SEDA and VM
Interconnecting Routes
from("activemq:queue:one").to("seda:one");
from("seda:one?multipleConsumers=true").log("here");
from("seda:one?multipleConsumers=true").log("and there");
–  Publish / Subscribe like capability
–  Each route gets its own copy of the Exchange
–  Multicast EIP better for known set of routes
–  https://issues.apache.org/jira/browse/CAMEL-6451
SEDA and VM
Wire Tap
To create an asynchronous path from
your main route. Useful for audit and
logging operations.
Wire Tap
from("direct:start")
.wiretap("direct:tap")
.to("direct:other");
from("direct:tap")
.log("something interesting happened");
from("direct:other")
.wiretap("activemq:queue:tap")
.to("direct:other");
–  Runs on different thread / thread pool
–  Default Thread Pool - initial 10; grows to 20
Wire Tap
from("direct:start")
.wiretap("direct:tap-mod")
.delay(constant(1000))
.log("Oops! Body changed unexpectedly");
from("direct:tap-mod")
.bean(BodyModifier.class, "changeIt"); // Modifies message body
–  Message, Header, and Properties passed by reference
Wire Tap
from("direct:start")
.wiretap("direct:tap-mod").onPrepare(new DeepCloningProcessor())
.delay(constant(1000))
.log("Yay! Body not changed.");
from("direct:tap-mod")
.bean(BodyModifier.class, "changeIt");
–  onPrepare calls Processor before wiretap endpoint
Throttler
For when you need to limit the number
of concurrent calls made a sequence of
actions. For example, limit calls to a
back-end ERP.
Throttler
from("direct:start")
.throttle(constant(5)) // max per period expression
.to("direct:throttled") // step(s) being throttled
.end() // end of step(s)
.to("direct:post-throttle");
–  Example limits to 5 messages per 1,000 ms (default)
–  Should use end() to delimit steps being throttled
Throttler
from("direct:start")
.throttle(header("message-limit")) // expression
.to("direct:throttled")
.end()
.to("direct:post-throttle");
–  Example throttles to value in header "message-limit"
–  Will use last value if Expression evaluates to null
Throttler
from("direct:start")
.throttle(constant(5)).timePeriodMillis(2000) // value in milliseconds
.to("direct:throttled")
.end()
.to("direct:post-throttle");
–  Example limits to 5 messages per 2,000 ms
Throttler
from("direct:start")
.throttle(constant(5)).asyncDelayed()
.to("direct:throttled")
.end()
.to("direct:post-throttle");
–  asyncDelayed() causes throttled requests to be queued for future
processing, releasing calling thread (non-blocking)
Transactions
For local transaction control within your
routes to commit data or rollback on
error. Includes fine grained support for
scoping of transactions.
Transactions
Setup Transaction manager reference (requires Spring).
<bean id="sql" class="org.apache.camel.component.sql.SqlComponent">
<property name="dataSource" ref="auditDataSource"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="auditDataSource"/>
</bean>
<bean id="PROPAGATION_REQUIRED" class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<property name="transactionManager" ref="transactionManager"/>
<property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"/>
</bean>
Transactions
Mark a route as transacted. Will commit local transaction at route completion or
automatically rollback if an error is thrown and not handled.
from("direct:transacted")
.transacted()
.setHeader("message", body())
.to("sql:insert into audit_log (message) values(:#message)")
.to("mock:out");
Transactions
Can also explicitly scope transactions.
from("direct:policies")
.setHeader("message", body())
.policy("PROPAGATION_REQUIRED") // Transaction 1
.to("sql:insert into audit_log (message) values (:#message)")
.to("mock:out1")
.end()
.policy("PROPAGATION_REQUIRED") // Transaction 2
.to("sql:insert into messages (message) values (:#message)")
.to("mock:out2")
.end();
XSLT
Camel supports many different ways to
transform data, for example using XSLT
to transform XML.
XSLT
from("direct:start")
.to("xslt:books.xslt");
–  Example uses books.xslt on classpath: (default)
–  Also supports file: and http:
XSLT
from("direct:start")
.to("xslt:books.xslt?output=DOM");
–  output controls output data type
–  Supports: string (default), bytes, DOM, and file
–  output=file writes directly to disk; path must exist
–  File name controlled by header "CamelXsltFileName"
XSLT
from("direct:start").setHeader("myParamValue", constant("29.99")).to("xslt:books-with-param.xslt");
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="myParamValue"/>
<xsl:template match="/">
<books>
<xsl:attribute name="value">
<xsl:value-of select="$myParamValue"/>
</xsl:attribute>
<xsl:apply-templates select="/bookstore/book/title[../price>$myParamValue]">
<xsl:sort select="."/>
</xsl:apply-templates>
</books>
</xsl:template>
</xsl:stylesheet>
Mock Endpoints
Camel provides some very powerful
Unit Testing capabilities. Its
MockEndpoint class supports complex
expressions to validate your routes.
Mock Endpoints
from("direct:start")
.filter().simple("${body} contains 'Camel'")
.to("mock:camel")
.end();
public class ContentBasedRouterTest extends CamelTestSupport {
@Test
public void testCamel() throws Exception {
getMockEndpoint("mock:camel").expectedMessageCount(1);
template.sendBody("direct:start", "Camel Rocks!");
assertMockEndpointsSatisfied();
}
}
Mock Endpoints
MockEndpoint mockCamel = getMockEndpoint("mock:camel");
mockCamel.expectedMessageCount(2);
mockCamel.message(0).body().isEqualTo("Camel Rocks");
mockCamel.message(0).header("verified").isEqualTo(true);
mockCamel.message(0).arrives().noLaterThan(50).millis().beforeNext();
mockCamel.allMessages().simple("${header.verified} == true");
template.sendBody("direct:start", "Camel Rocks");
template.sendBody("direct:start", "Loving the Camel");
mockCamel.assertIsSatisfied();
Exchange exchange0 = mockCamel.assertExchangeReceived(0);
Exchange exchange1 = mockCamel.assertExchangeReceived(1);
assertEquals(exchange0.getIn().getHeader("verified"), exchange1.getIn().getHeader("verified"));
Mock Endpoints
from("direct:start").inOut("mock:replying").to("mock:out");
getMockEndpoint("mock:replying")
.returnReplyBody(SimpleBuilder.simple("Hello ${body}"));
getMockEndpoint("mock:out").expectedBodiesReceived("Hello Camel");
template.sendBody("direct:start", "Camel");
assertMockEndpointsSatisfied();
Mock Responding
Mock Endpoints
from("direct:start").to("activemq:out");
public class ContentBasedRouterTest extends CamelTestSupport {
@Override
public String isMockEndpoints() {
return "activemq:out";
}
@Test
public void testCamel() throws Exception {
getMockEndpoint("mock:activemq:out").expectedMessageCount(1);
template.sendBody("direct:start", "Camel Rocks!");
assertMockEndpointsSatisfied();
}
}
Auto Mocking
Naming your Routes in JMX
Camel by default exposes your routes
through JMX. You should provide
explicit names for your routes to make
it easier for yourself and others to
monitor.
Naming your Routes in JMX
from("direct:start")
.routeId("first-route")
.log("${body}")
.to("mock:result");
JMX Name
org.apache.camel:context=localhost/contextName,type=routes,name=first-route
•  By default, Camel will name "route-N"
•  It will use the route id if provided as part of the JMX name
POJO Producing
Camel’s ProducerTemplate is seen
mostly in Unit Tests, and it provides a
great way to interact with Camel from
your existing code.
POJO Producing
public class ProducePojo {
@Produce
private ProducerTemplate template;
public String sayHello(String name) {
return template.requestBody("activemq:sayhello", name, String.class);
}
}
–  Send (InOnly) or Request (InOut) to Endpoint or Route
POJO Producing
public interface ProxyPojo {
String sayHello(String name);
}
public class ProxyProduce {
@Produce(uri = "activemq:queue:sayhello")
ProxyPojo myProxy;
public String doSomething(String name) {
return myProxy.sayHello(name);
}
}
–  Proxy template Java interface to make use clearer
Parameter Binding
Camel was designed to work well with
calling POJOs. Parameter Binding allows
you to, within the route, map the
message to the method parameters.
This makes it even easier to call POJOs
from Camel.
Parameter Binding
public String myMethod(
@Header("JMSCorrelationID") String id,
@Body String message) {
...
}
public String myOtherMethod(
@XPath("/myDate/people/@id") String id,
@Body String message) {
...
}
Parameter Binding
public class MyBean {
public String sayHello(String name, boolean fanboy) {
return (fanboy) ? ("Hello iPhone") : ("Hello " + name);
}
}
from("direct:fanboy").bean(MyBean.class, "sayHello(${body}, true)");
from("direct:undecided")
.bean(MyBean.class, "sayHello(${body}, ${header.fanboy})");
–  Send (InOnly) or Request (InOut) to Endpoint or Route
Questions?
Apache Camel Developer’s Cookbook
•  100+ Recipes
•  424 pages
•  Published Dec 2013
•  Camel 2.12.2
•  https://github.com/
CamelCookbook

Más contenido relacionado

La actualidad más candente

Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsAdrien Guéret
 
Ruby off Rails (japanese)
Ruby off Rails (japanese)Ruby off Rails (japanese)
Ruby off Rails (japanese)Stoyan Zhekov
 
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Apache Camel for Devclub.eu
Apache Camel for Devclub.euApache Camel for Devclub.eu
Apache Camel for Devclub.euAnton Arhipov
 
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...Uniface
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Arun Gupta
 
Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camelMarko Seifert
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-IIIprinceirfancivil
 
Introduction to Node.JS Express
Introduction to Node.JS ExpressIntroduction to Node.JS Express
Introduction to Node.JS ExpressEueung Mulyana
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen LjuSkills Matter
 
Apache camel overview dec 2011
Apache camel overview dec 2011Apache camel overview dec 2011
Apache camel overview dec 2011Marcelo Jabali
 
Using Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databasesUsing Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databasesRaimonds Simanovskis
 
Advanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareAdvanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareOpevel
 
Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...
Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...
Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...Uniface
 
Azure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshopAzure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshopMarco Obinu
 

La actualidad más candente (20)

Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Ruby off Rails (japanese)
Ruby off Rails (japanese)Ruby off Rails (japanese)
Ruby off Rails (japanese)
 
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
#34.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자교육,국...
 
Apache Camel for Devclub.eu
Apache Camel for Devclub.euApache Camel for Devclub.eu
Apache Camel for Devclub.eu
 
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#30.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
Uniface Lectures Webinar - Building Responsive Applications with Uniface: Dep...
 
Introduction to JavaScript
Introduction to JavaScriptIntroduction to JavaScript
Introduction to JavaScript
 
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
Hyperproductive JSF 2.0 @ JavaOne Brazil 2010
 
Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camel
 
Building and managing java projects with maven part-III
Building and managing java projects with maven part-IIIBuilding and managing java projects with maven part-III
Building and managing java projects with maven part-III
 
Introduction to Node.JS Express
Introduction to Node.JS ExpressIntroduction to Node.JS Express
Introduction to Node.JS Express
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
 
Os Furlong
Os FurlongOs Furlong
Os Furlong
 
Apache camel overview dec 2011
Apache camel overview dec 2011Apache camel overview dec 2011
Apache camel overview dec 2011
 
Using Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databasesUsing Ruby on Rails with legacy Oracle databases
Using Ruby on Rails with legacy Oracle databases
 
Advanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareAdvanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshare
 
Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...
Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...
Uniface Lectures Webinar - Application & Infrastructure Security - Hardening ...
 
Express JS
Express JSExpress JS
Express JS
 
Os Pruett
Os PruettOs Pruett
Os Pruett
 
Azure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshopAzure Day Reloaded 2019 - ARM Template workshop
Azure Day Reloaded 2019 - ARM Template workshop
 

Destacado

Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache CamelKenneth Peeples
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache CamelClaus Ibsen
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelDomingo Suarez Torres
 
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardFusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardCharles Moulliard
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Christian Posta
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache CamelClaus Ibsen
 
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO Christian Posta
 
Aktualny stan social media
Aktualny stan social mediaAktualny stan social media
Aktualny stan social mediaŁukasz Dębski
 

Destacado (10)

Simplify your integrations with Apache Camel
Simplify your integrations with Apache CamelSimplify your integrations with Apache Camel
Simplify your integrations with Apache Camel
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
 
SG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache CamelSG 09 Patrones de Integración Empresarial Apache Camel
SG 09 Patrones de Integración Empresarial Apache Camel
 
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardFusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 
Apache Camel - Parte II
Apache Camel - Parte IIApache Camel - Parte II
Apache Camel - Parte II
 
Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2Microservices with Apache Camel, Docker and Fabric8 v2
Microservices with Apache Camel, Docker and Fabric8 v2
 
Developing Microservices with Apache Camel
Developing Microservices with Apache CamelDeveloping Microservices with Apache Camel
Developing Microservices with Apache Camel
 
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
DevOps with ActiveMQ, Camel, Fabric8, and HawtIO
 
Aktualny stan social media
Aktualny stan social mediaAktualny stan social media
Aktualny stan social media
 

Similar a Cooking with Apache Camel: Tips and Tricks - DevNation 2014

Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixEasy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixelliando dias
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomyDongmin Yu
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기NAVER D2
 
Red Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop LabsRed Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop LabsJudy Breedlove
 
Continuous Application with Structured Streaming 2.0
Continuous Application with Structured Streaming 2.0Continuous Application with Structured Streaming 2.0
Continuous Application with Structured Streaming 2.0Anyscale
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...Aman Kohli
 
Integration made easy with Apache Camel
Integration made easy with Apache CamelIntegration made easy with Apache Camel
Integration made easy with Apache CamelRosen Spasov
 
Liquibase migration for data bases
Liquibase migration for data basesLiquibase migration for data bases
Liquibase migration for data basesRoman Uholnikov
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
Scala Frustrations
Scala FrustrationsScala Frustrations
Scala Frustrationstakezoe
 
Camel manual-2.11.0
Camel manual-2.11.0Camel manual-2.11.0
Camel manual-2.11.0sharonv1
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache CamelChristian Posta
 
Writing Continuous Applications with Structured Streaming Python APIs in Apac...
Writing Continuous Applications with Structured Streaming Python APIs in Apac...Writing Continuous Applications with Structured Streaming Python APIs in Apac...
Writing Continuous Applications with Structured Streaming Python APIs in Apac...Databricks
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Prajal Kulkarni
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングscalaconfjp
 
Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Ngoc Dao
 

Similar a Cooking with Apache Camel: Tips and Tricks - DevNation 2014 (20)

Camel as a_glue
Camel as a_glueCamel as a_glue
Camel as a_glue
 
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMixEasy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
Easy Enterprise Integration Patterns with Apache Camel, ActiveMQ and ServiceMix
 
Scala active record
Scala active recordScala active record
Scala active record
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
 
[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기[245] presto 내부구조 파헤치기
[245] presto 내부구조 파헤치기
 
Riding Apache Camel
Riding Apache CamelRiding Apache Camel
Riding Apache Camel
 
Red Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop LabsRed Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop Labs
 
Continuous Application with Structured Streaming 2.0
Continuous Application with Structured Streaming 2.0Continuous Application with Structured Streaming 2.0
Continuous Application with Structured Streaming 2.0
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
 
Integration made easy with Apache Camel
Integration made easy with Apache CamelIntegration made easy with Apache Camel
Integration made easy with Apache Camel
 
Liquibase migration for data bases
Liquibase migration for data basesLiquibase migration for data bases
Liquibase migration for data bases
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
Scala Frustrations
Scala FrustrationsScala Frustrations
Scala Frustrations
 
Play vs Rails
Play vs RailsPlay vs Rails
Play vs Rails
 
Camel manual-2.11.0
Camel manual-2.11.0Camel manual-2.11.0
Camel manual-2.11.0
 
Integrating Microservices with Apache Camel
Integrating Microservices with Apache CamelIntegrating Microservices with Apache Camel
Integrating Microservices with Apache Camel
 
Writing Continuous Applications with Structured Streaming Python APIs in Apac...
Writing Continuous Applications with Structured Streaming Python APIs in Apac...Writing Continuous Applications with Structured Streaming Python APIs in Apac...
Writing Continuous Applications with Structured Streaming Python APIs in Apac...
 
Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.Null Bachaav - May 07 Attack Monitoring workshop.
Null Bachaav - May 07 Attack Monitoring workshop.
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
 
Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014Xitrum @ Scala Matsuri Tokyo 2014
Xitrum @ Scala Matsuri Tokyo 2014
 

Último

IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024vaibhav130304
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletAndrea Goulet
 
A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfICS
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...naitiksharma1124
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfkalichargn70th171
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignNeo4j
 
Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...
Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...
Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...Marko Lohert
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMarkus Moeller
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Andrea Goulet
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMok TH
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)Roberto Bettazzoni
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfsteffenkarlsson2
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckMarc Lester
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Soroosh Khodami
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfDeskTrack
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Henry Schreiner
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionMohammed Fazuluddin
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024Shane Coughlan
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems ApproachNeo4j
 

Último (20)

IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024IT Software Development Resume, Vaibhav jha 2024
IT Software Development Resume, Vaibhav jha 2024
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdf
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by Design
 
Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...
Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...
Reinforcement Learning – a Rewards Based Approach to Machine Learning - Marko...
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptx
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
 
What is an API Development- Definition, Types, Specifications, Documentation.pdf
What is an API Development- Definition, Types, Specifications, Documentation.pdfWhat is an API Development- Definition, Types, Specifications, Documentation.pdf
What is an API Development- Definition, Types, Specifications, Documentation.pdf
 
Jax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined DeckJax, FL Admin Community Group 05.14.2024 Combined Deck
Jax, FL Admin Community Group 05.14.2024 Combined Deck
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdf
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and Prevention
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024
 
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
 

Cooking with Apache Camel: Tips and Tricks - DevNation 2014