-
Page 5 eip website
(www. enterpriseintegrationpatterns.com)
should be (remove space in url):
(www.enterpriseintegrationpatterns.com)
-
Page 7, easy configuration
from("file:data/inbox?recursive=true&include=*.xml")...
should be (uses reg exp)
from("file:data/inbox?recursive=true&include=.*xml$")...
-
Page 10, listing 1.1
copyFIle(source, dest);
should be
copyFile(source, dest);
-
Page 17
Allow for clients of servers to be stubbed out (using mocks) for testing purposes
should be (uses reg exp)
Allow for clients or servers to be stubbed out (using mocks) for testing purposes
-
Page 63, tTble 3.1, 3 description
add missing information
We'll cover data formats in section 3.4.
-
Page 64, middle
which you can obtain Exchange using the getCamelContext method.
should be
which you can obtain from Exchange using the getContext method.
-
Page 69, bottom
mvn test -Dtest= SpringTransformMethodTest
mvn test -Dtest= SpringTransformScriptTest
remove space after =
mvn test -Dtest=SpringTransformMethodTest
mvn test -Dtest=SpringTransformScriptTest
-
Page 69, bottom
the last sentence should be removed
They're located in the chapter3/transform directory and are named SpringTransformMethodTest and SpringTransformScriptTest.
-
Page 76, listing 3.5
package com.acme.order;
should read
package camelinaction;
-
Page 79, after table
As you can see, Camel provides 18 data formats
should mention Camel version
As you can see, Camel (version 2.5) provides 18 data formats
-
Page 82, bottom note
Chapter 6 will covered testing with Camel
should be
Chapter 6 will cover testing with Camel
-
Page 87, middle Velocity example
at a cost of
${body.price}
should use continuation marker (-->) instead of breaking line
at a -->
cost of ${body.price}
-
Page 90, section 3.6.2
javax.jmx.TextMessage
should read
javax.jms.TextMessage
-
Page 91, bottom
If you cat the magic file, you'll see this:
should be
If you display the service file, you'll see this:
-
Page 102, section 4.3.4
<osgi:service id="helloService" interface="camelinaction.HelloBean" ref="helloBean"/>
should be
<osgi:service interface="camelinaction.HelloBean" ref="helloBean"/>
and
you export the HelloBean into the OSGi registry under the name helloService. You can use the HelloBean from a Camel route the same way you've already learned, by referring to its OSG service name:
should be
you export the HelloBean into the OSGi registry under the name helloBean. You can use the HelloBean from a Camel route the same way you've already learned, by referring to its OSGi service name:
and
<bean ref="helloService" method="hello"/>
should be
<bean ref="helloBean" method="hello"/>
-
Page 123, top
Message msg = Exchange.getOut();
should be
Message msg = exchange.getOut();
-
Page 125, section 5.2.1
.beanRef("orderService, "validate")
.beanRef("orderService, "store")
should be (a " is missing)
.beanRef("orderService", "validate")
.beanRef("orderService", "store")
-
Page 127, middle
Exchange.CAUSED_EXCEPTION
should be
Exchange.EXCEPTION_CAUGHT
-
Page 131, table 5.3, DelayPattern option
For example, the pattern "0:1000; 5:5000;10:30000" will use a 1 second delay for attempts 0 to 4, 5 seconds for attempts 5 to 9, and 30 seconds for subse- quent attempts.
should be
For example, the pattern "1:1000; 6:5000;11:30000" will use a 1 second delay for redelivery attempts 1 to 5, 5 seconds for attempts 6 to 10, and 30 seconds for subsequent attempts.
-
Page 132, top
.backOffMultiplier(2)
exponential backoff is automatic enabled in Java but the example could be improved to be exactly the same as in XML
.backOffMultiplier(2)
.useExponentialBackOff()
-
Page 134, middle
Suppose two orders are sent to the seda:queue:inbox endpoint.
should be
Suppose two orders are sent to the seda:queue.inbox endpoint.
-
Page 141, middle
direct subclass of java.io.Exception, so the gap ...
should be
direct subclass of java.io.IOException, so the gap ...
-
Page 142, top
<exception>javax.jms.JmsException</exception>
<redeliverPolicy...>
should be
<exception>javax.jms.JMSException</exception>
<redeliveryPolicy ...>
-
Page 144
JmsException
should be (2 times on this page)
JMSException
-
Page 145
JmsException
should be (8 times on this page, also in figure 5.5)
JMSException
-
Page 145, before figure 5.5
The route has an OnException defined that ...
should be
The route has an onException defined that ...
-
Page 146, top
Because the OnException was configured ...
should be
Because the onException was configured ...
-
Page 146, listing 5.5
javax.jms.JmsException
should be (also in bullet (1) label)
javax.jms.JMSException
-
Page 148, listing 5.7
JmsException
should be
JMSException
-
Page 151, middle
.to("file:/acme/files/illegal");
should be
.to("file:/rider/files/illegal");
-
Page 151, before section 5.5.2
tied to the Camel API. onWhen is a general
should be (OnWhen)
tied to the Camel API. OnWhen is a general
-
Page 157, top
lives in the camel-test-2.5.jar file and
should be
lives in the camel-test JAR file and
-
Page 162, listing 6.4
"camelinaction/rider-came-test.xml"});
should be (l missing in camel)
"camelinaction/rider-camel-test.xml"});
-
Page 192
Now let's look at each component in detail. We'll start by looking at the File component.
should be
Now let's look at each component from table 7.1 in detail. We'll start by looking at the File component.
-
Page 193, table 7.3, include row
Specifies a regular expression. Camel will process only those files that
match this expression.
should be
Specifies a regular expression. Camel will process only those files that
match this expression. For example include=.*xml would include all files with the .xml extension.
-
Page 199, table 7.5, clientId row
Sets the JMS client ID, which must be unique among all connections to the JMS broker. The client ID set in the ConnectionFactory overrides this one if set.
should be
Sets the JMS client ID, which must be unique among all connections to the JMS broker. The client ID set in the ConnectionFactory overrides this one if set. Only needed when using durable topics.
-
Page 199, table 7.5, requestTimeout row
Specifies the time in milliseconds before Camel will timeout sending a message.
should be
Specifies the time in milliseconds before Camel will timeout when sending a message in request-reply mode.
-
Page 208, CXF version on bottom of page
2.2.10
should be
2.2.11
-
Page 210, in code of listing 7.3
<wsdl:operation name="Order">
should be
<wsdl:operation name="order">
-
Page 211, Listing 7.4, CXF version
<version>2.2.10</version>
should be
<version>2.2.11</version>
-
Page 217
where transport is one of tcp, udp, multicast/mcast, or vm.
should be
where transport is one of tcp, udp, or vm.
-
Page 223
The orderToSql bean is shown in listing 7.8.
should be
The orderToSql bean is shown in listing 7.8. Note that this bean is for demonstration of the concept only; in a production scenario you would need to perform validation of the parameters to prevent SQL injection type attacks.
-
Page 225, table 7.11, "flushOnSend" row
"Default value" column should be set to "true"
-
Page 231, listing 7.12
.to("seda:xmlOrders?multipleConsumers=true")
should be
.to("seda:xmlOrders")
-
Page 231, listing 7.12
.to("seda:csvOrders?multipleConsumers=true")
should be
.to("seda:csvOrders")
-
Page 232, delete the following text as it no longer applies in the current Camel version
Another important detail in this listing is that
SEDA endpoint URIs that are reused in consumer and producer scenarios need to be
exactly the same as each other. It's not enough to specify the correct SEDA queue
name; you need to use the queue name and all options.
-
Page 232
mvn compile exec:java -Dexec.mainClass=camelinaction.OrderRouter
should be
mvn compile exec:java -Dexec.mainClass=camelinaction.OrderRouterWithSeda
-
Page 233, indent the following code lines 4 spaces
.setBody().simple("Current time is ${header.firedTime}")
.to("stream:out");
-
Page 234, indent the following code lines 4 spaces
.setBody().simple("Current time is ${header.firedTime}")
.to("stream:out");
-
Page 246, table 8.4
Exchange.AGGREGATED SIZE
Exchange.AGGREGATED COMPLETED BY
Exchange.AGGREGATED CORRELATION KEY
_ is missing
Exchange.AGGREGATED_SIZE
Exchange.AGGREGATED_COMPLETED_BY
Exchange.AGGREGATED_CORRELATION_KEY
-
Page 247, table 8.5, 1st row
completion-Predicate
Should be (remove -)
completionPredicate
-
Page 248, table 8.5 cont., 1st row
CamelExchange-Exception
Should be (remove -)
CamelExchangeException
-
Page 258 the third line
The result from the evaluation is used to create a java.util.Itetator
should be (Iterator):
The result from the evaluation is used to create a java.util.Iterator
-
Page 261, listing 8.5
("\n")).streaming()
Should not be in bold face
-
Page 261, listing 8.6
streaming="true"
Should not be in bold face
-
Page 269, warning
WARNING When using @RecipientList it's important to not use recipientList in the DSL at the same time. By doing this, Camel will double up using Recipient List EIP, which is not the intention. Instead, do as shown in the example below.
Should be (although the same applies for @RecipientList)
WARNING When using @RoutingSlip it's important to not use routingSlip in the DSL at the same time. By doing this, Camel will double up using RoutingSlip EIP, which is not the intention. Instead, do as shown in the example below.
-
Page 269, middle
from("direct:start").bean(SlipBean.class);
The " should not be in bold face
-
Page 279, middle
In the Java DSL, you use a custom load balancer as shown in bold:
should be
In the Java DSL, you use a custom load balancer as shown:
-
Page 300, top
JtaTransactionManager
should not be in bold codeface
-
Page 302, top
value="PROPAGATION_REQUIRES_NEW"/
should be (> missing)
value="PROPAGATION_REQUIRES_NEW"/>
-
Page 310, sidebar
The UnitOfWork boundaries are always at the beginning and end of Camel routes.
should be
The UnitOfWork boundaries are always at the beginning and end of the exchange being routed.
-
Page 324, table 10.1
should be
The last sentence in all the descriptions should end with a dot.
-
Page 325, table 10.2 caption
Activities for managing thread pools
should be
Activities for managing thread pools taken care of by Camel
-
Page 347, top
Understanding the principle of Future is important because it's the same mechanism Camel leverages internally when it processes messages asynchronously. Future also plays a role in the concurrency client API provided by Camel, which we're going to take a look at now.
should be
Understanding the principle of Future is important because Future plays a important role in the concurrency client API provided by Camel, which we're going to take a look at now.
-
Page 348, table 10.9
should be
The last sentence in all the descriptions should end with a dot.
-
Page 422, top
mvn test -Dtest=ManualRouteWithOnCompletionTest
should be (we have added a Spring XML example)
mvn test -Dtest=ManualRouteWithOnCompletionTest
mvn test -Dtest=SpringManualRouteWithOnCompletionTest
-
Page 463 section A.4
has four functions
should be:
has six functions
-
Page 464 table A.2
properties:[locations:]key
should be:
properties[:locations].key
-
Page 470 just before summary
passed into the matches method on the SimpleBuilder.
should be:
passed into the evaluate or matches method on the SimpleBuilder.
-
Page 479, just after listing C.2
The HTTP producer will send an HTTP GET request in this case.
should read
The HTTP producer will send an HTTP GET request with a request parameter id in this case.
-
Page 485 camel-extra website
(code.google. com/p/camel-extra).
should be (remove space in url):
(code.google.com/p/camel-extra).
-
Page 486 issue tracker url
issues.apache.org/activemq/browse/CAMEL
should be:
issues.apache.org/jira/browse/camel
-
Page 487 bottom
akkasource.org
should be (they changed website)
akka.io
-
Page 488 middle
doc.akkasource.org/camel
should be (they changed website)
doc.akka.io/camel
-
Page 497 section E.7
the Akka homepage (akkasource.org) in a browser,
should be (they changed website)
the Akka homepage (akka.io) in a browser,
-
Page 497 figure E.1
akkasource.org
should be (they changed website) - Note: 2x times in this figure
akka.io
-
Page 498 listing E.7
def endpointUri = "jetty:akkasource.org/?bridgeEndpoint=true"
should be (they changed website)
def endpointUri = "jetty:akka.io/?bridgeEndpoint=true"
-
Page 498 bottom
A forwarded message causes the HttpProducer to send a GET request to akkasource.org.
should be (they changed website)
A forwarded message causes the HttpProducer to send a GET request to akka.io.
-
Page 498 bottom
The received HTML content from akkasource.org is then forwarded
should be (they changed website)
The received HTML content from akka.io is then forwarded