SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
CamelOne 2013
June 10-11 2013
Boston, MA
Get Cooking with
Apache Camel
Cookbook of Tips and Tricks
Scott Cranton
CamelOne 2013
CamelOne
Who is this Scott Cranton?
Currently at Red Hat - Middleware (technical) sales
Joined FuseSource Feb, 2009 - 4.5 years with Camel
Previously at:
BEA / Oracle, Nexaweb, Object Design / Progress,
MapInfo, OpenMap,TerraLogics / Strategic Mapping
First 10+ years full time coder; last 12+ selling
middleware
https://github.com/FuseByExample
https://github.com/CamelCookbook
2
CamelOne 2013
CamelOne
Why a Camel Cookbook?
Help beginner to intermediate users get productive
by example with references for later reading
Break common Camel tasks into Recipes
Each recipe contains:
Introduction
How to do it (task oriented)
How it works
There’s more
3
CamelOne 2013
CamelOne
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”);
4
CamelOne 2013
CamelOne
Camel Enterprise Integration Cookbook
Topics include:
Structuring Routes, Routing, Split/Join,Transformation,Testing,
Error Handling, Monitoring and Debugging, Extending Camel,
Parallel processing, Security,Transactions, ...
~110 Recipes
Co-Authors: Scott Cranton and Jakub Korab
https://github.com/CamelCookbook/
Welcome feedback, reviews, contributions, ...
5
CamelOne 2013
CamelOne
Camel Cookbook Tasting Menu
Route Design
Routing messages (EIP)
Transformation
Unit Testing
Extending Camel
6
CamelOne 2013
CamelOne
Interconnecting Routes
Camel supports breaking routes up into re-usable
sub-routes, and synchronously or asynchronously
calling those sub-routes.
7
CamelOne 2013
CamelOne
Interconnecting Routes
8
Within
Context
Within JVM
Synchronous Direct Direct-VM
Asynchronous SEDA VM
CamelOne 2013
CamelOne
Interconnecting Routes
9
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
CamelOne 2013
CamelOne
Interconnecting Routes
10
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 andVM
CamelOne 2013
CamelOne
Interconnecting Routes
11
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
SEDA andVM
CamelOne 2013
CamelOne
Wire Tap
To create an asynchronous path from your main
route. Useful for audit and logging operations.
12
CamelOne 2013
CamelOne
Wire Tap
13
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
CamelOne 2013
CamelOne
Wire Tap
14
from(“direct:start”)
.wiretap(“direct:tap-mod”)
.delay(constant(1000))
.log(“Oops! Body changed unexpectedly”);
from(“direct:tap-mod”)
.bean(BodyModifier.class, // Modifies message body
“changeIt”);
Message, Header, and Properties passed by reference
CamelOne 2013
CamelOne
Wire Tap
15
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
CamelOne 2013
CamelOne
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.
16
CamelOne 2013
CamelOne
Throttler
17
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
CamelOne 2013
CamelOne
Throttler
18
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
CamelOne 2013
CamelOne
Throttler
19
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
CamelOne 2013
CamelOne
Throttler
20
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)
CamelOne 2013
CamelOne
XSLT
Camel supports many different ways to transform
data, for example using XSLT to transform XML.
21
CamelOne 2013
CamelOne
XSLT
22
from(“direct:start”)
.to(“xslt:books.xslt”);
Example uses books.xslt on classpath: (default)
Also supports file: and http:
CamelOne 2013
CamelOne
XSLT
23
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”
CamelOne 2013
CamelOne
XSLT
24
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>
CamelOne 2013
CamelOne
Mock Endpoints
Camel provides some very powerful Unit Testing
capabilities. Its MockEndpoint class supports complex
expressions to validate your routes.
25
CamelOne 2013
CamelOne
Mock Endpoints
26
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();
}
...
}
CamelOne 2013
CamelOne
Mock Endpoints
27
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"));
CamelOne 2013
CamelOne
Mock Endpoints
28
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
CamelOne 2013
CamelOne
Mock Endpoints
29
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
CamelOne 2013
CamelOne
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.
30
CamelOne 2013
CamelOne
POJO Producing
31
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
CamelOne 2013
CamelOne
POJO Producing
32
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
CamelOne 2013
CamelOne
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.
33
CamelOne 2013
CamelOne
Parameter Binding
34
public String myMethod(
@Header(“JMSCorrelationID”) String id,
@Body String message) {
...
}
public String myOtherMethod(
@XPath(“/myDate/people/@id”) String id,
@Body String message) {
...
}
CamelOne 2013
CamelOne
Parameter Binding
35
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
CamelOne
CamelOne 2013
Questions?
36
CamelOne 2013
CamelOne
Camel Enterprise Integration Cookbook
Topics include:
Structuring Routes, Routing, Split/Join,Transformation,Testing,
Error Handling, Monitoring and Debugging, Extending Camel,
Parallel processing, Security,Transactions, ...
~110 Recipes
Co-Authors: Scott Cranton and Jakub Korab
https://github.com/CamelCookbook/
Welcome feedback, reviews, contributions, ...
37

Más contenido relacionado

La actualidad más candente

Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camel
Marko Seifert
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
Skills Matter
 
Html servlet example
Html   servlet exampleHtml   servlet example
Html servlet example
rvpprash
 
Fast Web Applications Development with Ruby on Rails on Oracle
Fast Web Applications Development with Ruby on Rails on OracleFast Web Applications Development with Ruby on Rails on Oracle
Fast Web Applications Development with Ruby on Rails on Oracle
Raimonds Simanovskis
 

La actualidad más candente (20)

Workshop apache camel
Workshop apache camelWorkshop apache camel
Workshop apache camel
 
#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
 
Php classes in mumbai
Php classes in mumbaiPhp classes in mumbai
Php classes in mumbai
 
Os Furlong
Os FurlongOs Furlong
Os Furlong
 
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
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
 
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 ...
 
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
CQL performance with Apache Cassandra 3.0 (Aaron Morton, The Last Pickle) | C...
 
Os Pruett
Os PruettOs Pruett
Os Pruett
 
Advanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshareAdvanced moduledevelopment d6_slideshare
Advanced moduledevelopment d6_slideshare
 
What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?
 
Writing Redis in Python with asyncio
Writing Redis in Python with asyncioWriting Redis in Python with asyncio
Writing Redis in Python with asyncio
 
Html servlet example
Html   servlet exampleHtml   servlet example
Html servlet example
 
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
 
Planbox Backbone MVC
Planbox Backbone MVCPlanbox Backbone MVC
Planbox Backbone MVC
 
Extending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on RailsExtending Oracle E-Business Suite with Ruby on Rails
Extending Oracle E-Business Suite with Ruby on Rails
 
Fast Web Applications Development with Ruby on Rails on Oracle
Fast Web Applications Development with Ruby on Rails on OracleFast Web Applications Development with Ruby on Rails on Oracle
Fast Web Applications Development with Ruby on Rails on Oracle
 
Softshake 2013: 10 reasons why java developers are jealous of Scala developers
Softshake 2013: 10 reasons why java developers are jealous of Scala developersSoftshake 2013: 10 reasons why java developers are jealous of Scala developers
Softshake 2013: 10 reasons why java developers are jealous of Scala developers
 

Destacado

Destacado (7)

Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
 
Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011Apache Camel - Stéphane Kay - April 2011
Apache Camel - Stéphane Kay - April 2011
 
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, 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 Get Cooking with Apache Camel

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
elliando dias
 
Taking Apache Camel For a Ride
Taking Apache Camel For a RideTaking Apache Camel For a Ride
Taking Apache Camel For a Ride
Bruce Snyder
 
In Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified TemplateIn Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified Template
hannonhill
 

Similar a Get Cooking with Apache Camel (20)

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
 
Camel as a_glue
Camel as a_glueCamel as a_glue
Camel as a_glue
 
Riding Apache Camel
Riding Apache CamelRiding Apache Camel
Riding Apache Camel
 
Jstl Guide
Jstl GuideJstl Guide
Jstl Guide
 
Low Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdfLow Code Integration with Apache Camel.pdf
Low Code Integration with Apache Camel.pdf
 
Java Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom TagsJava Web Programming [5/9] : EL, JSTL and Custom Tags
Java Web Programming [5/9] : EL, JSTL and Custom Tags
 
DOSUG Taking Apache Camel For A Ride
DOSUG Taking Apache Camel For A RideDOSUG Taking Apache Camel For A Ride
DOSUG Taking Apache Camel For A Ride
 
Mazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml ToolsMazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml Tools
 
Introduction To Apache Mesos
Introduction To Apache MesosIntroduction To Apache Mesos
Introduction To Apache Mesos
 
Dax Declarative Api For Xml
Dax   Declarative Api For XmlDax   Declarative Api For Xml
Dax Declarative Api For Xml
 
Taking Apache Camel For a Ride
Taking Apache Camel For a RideTaking Apache Camel For a Ride
Taking Apache Camel For a Ride
 
Red Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop LabsRed Hat Agile integration Workshop Labs
Red Hat Agile integration Workshop Labs
 
Introduction To Scala
Introduction To ScalaIntroduction To Scala
Introduction To Scala
 
Viking academy backbone.js
Viking academy  backbone.jsViking academy  backbone.js
Viking academy backbone.js
 
Angular JS in 2017
Angular JS in 2017Angular JS in 2017
Angular JS in 2017
 
Xke - Introduction to Apache Camel
Xke - Introduction to Apache CamelXke - Introduction to Apache Camel
Xke - Introduction to Apache Camel
 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015
 
Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)Introduciton to Apache Cassandra for Java Developers (JavaOne)
Introduciton to Apache Cassandra for Java Developers (JavaOne)
 
Mule and web services
Mule and web servicesMule and web services
Mule and web services
 
In Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified TemplateIn Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified Template
 

Último

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Get Cooking with Apache Camel