This is an automated email from the ASF dual-hosted git repository.
tsato pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 9bfb28b CAMEL-14178: camel-amqp - Add tests for AMQP annotations
9bfb28b is described below
commit 9bfb28b78c7156f1c792efd96fbed8a9cffc7af1
Author: Tadayoshi Sato <[email protected]>
AuthorDate: Wed Nov 20 17:19:18 2019 +0900
CAMEL-14178: camel-amqp - Add tests for AMQP annotations
---
.../camel-amqp/src/main/docs/amqp-component.adoc | 16 +--
.../apache/camel/component/amqp/AMQPRouteTest.java | 82 +++++++++++--
.../endpoint/dsl/AMQPEndpointBuilderFactory.java | 133 +++++++++------------
3 files changed, 140 insertions(+), 91 deletions(-)
diff --git a/components/camel-amqp/src/main/docs/amqp-component.adoc
b/components/camel-amqp/src/main/docs/amqp-component.adoc
index 4652161..323501a 100644
--- a/components/camel-amqp/src/main/docs/amqp-component.adoc
+++ b/components/camel-amqp/src/main/docs/amqp-component.adoc
@@ -166,7 +166,7 @@ with the following path and query parameters:
|===
| Name | Description | Default | Type
| *clientId* (common) | Sets the JMS client ID to use. Note that this value,
if specified, must be unique and can only be used by a single JMS connection
instance. It is typically only required for durable topic subscriptions. If
using Apache ActiveMQ you may prefer to use Virtual Topics instead. | | String
-| *connectionFactory* (common) | Sets the default connection factory to be
used if a connection factory is not specified for either
setTemplateConnectionFactory(ConnectionFactory) or
setListenerConnectionFactory(ConnectionFactory) | | ConnectionFactory
+| *connectionFactory* (common) | The connection factory to be use. A
connection factory must be configured either on the component or endpoint. | |
ConnectionFactory
| *disableReplyTo* (common) | Specifies whether Camel ignores the JMSReplyTo
header in messages. If true, Camel does not send a reply back to the
destination specified in the JMSReplyTo header. You can use this option if you
want Camel to consume from a route and you do not want Camel to automatically
send back a reply message because another component in your code handles the
reply message. You can also use this option if you want to use Camel as a proxy
between different message broker [...]
| *durableSubscriptionName* (common) | The durable subscriber name for
specifying durable topic subscriptions. The clientId option must be configured
as well. | | String
| *jmsMessageType* (common) | Allows you to force the use of a specific
javax.jms.Message implementation for sending JMS messages. Possible values are:
Bytes, Map, Object, Stream, Text. By default, Camel would determine which JMS
message type to use from the In body type. This option allows you to specify
it. | | JmsMessageType
@@ -185,11 +185,11 @@ with the following path and query parameters:
| *subscriptionName* (consumer) | Set the name of a subscription to create. To
be applied in case of a topic (pub-sub domain) with a shared or durable
subscription. The subscription name needs to be unique within this client's JMS
client id. Default is the class name of the specified message listener. Note:
Only 1 concurrent consumer (which is the default of this message listener
container) is allowed for each subscription, except for a shared subscription
(which requires JMS 2.0). | | String
| *subscriptionShared* (consumer) | Set whether to make the subscription
shared. The shared subscription name to be used can be specified through the
subscriptionName property. Default is false. Set this to true to register a
shared subscription, typically in combination with a subscriptionName value
(unless your message listener class name is good enough as subscription name).
Note that shared subscriptions may also be durable, so this flag can (and often
will) be combined with subscrip [...]
| *acceptMessagesWhileStopping* (consumer) | Specifies whether the consumer
accept messages while it is stopping. You may consider enabling this option, if
you start and stop JMS routes at runtime, while there are still messages
enqueued on the queue. If this option is false, and you stop the JMS route,
then messages may be rejected, and the JMS broker would have to attempt
redeliveries, which yet again may be rejected, and eventually the message may
be moved at a dead letter queue on th [...]
-| *allowReplyManagerQuickStop* (consumer) | Whether the
DefaultMessageListenerContainer used in the reply managers for request-reply
messaging allow the DefaultMessageListenerContainer#runningAllowed() flag to
quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping() is enabled,
and org.apache.camel.CamelContext is currently being stopped. This quick stop
ability is enabled by default in the regular JMS consumers but to enable for
reply managers you must enable this flag. | fal [...]
+| *allowReplyManagerQuickStop* (consumer) | Whether the
DefaultMessageListenerContainer used in the reply managers for request-reply
messaging allow the DefaultMessageListenerContainer.runningAllowed flag to
quick stop in case JmsConfiguration#isAcceptMessagesWhileStopping is enabled,
and org.apache.camel.CamelContext is currently being stopped. This quick stop
ability is enabled by default in the regular JMS consumers but to enable for
reply managers you must enable this flag. | false | [...]
| *consumerType* (consumer) | The consumer type to use, which can be one of:
Simple, Default, or Custom. The consumer type determines which Spring JMS
listener to use. Default will use
org.springframework.jms.listener.DefaultMessageListenerContainer, Simple will
use org.springframework.jms.listener.SimpleMessageListenerContainer. When
Custom is specified, the MessageListenerContainerFactory defined by the
messageListenerContainerFactory option will determine what
org.springframework.jms. [...]
| *defaultTaskExecutorType* (consumer) | Specifies what default TaskExecutor
type to use in the DefaultMessageListenerContainer, for both consumer endpoints
and the ReplyTo consumer of producer endpoints. Possible values: SimpleAsync
(uses Spring's SimpleAsyncTaskExecutor) or ThreadPool (uses Spring's
ThreadPoolTaskExecutor with optimal values - cached threadpool-like). If not
set, it defaults to the previous behaviour, which uses a cached thread pool for
consumer endpoints and SimpleAsy [...]
| *eagerLoadingOfProperties* (consumer) | Enables eager loading of JMS
properties and payload as soon as a message is loaded which generally is
inefficient as the JMS properties may not be required but sometimes can catch
early any issues with the underlying JMS provider and the use of JMS
properties. See also the option eagerPoisonBody. | false | boolean
-| *eagerPoisonBody* (consumer) | If eagerLoadingOfProperties is enabled and
the JMS message payload (JMS body or JMS properties) (cannot be read/mapped),
then set this text as the message body instead so the message can be processed
(the cause of the poison are already stored as exception on the Exchange). This
can be turned off by setting eagerPoisonBody=false. See also the option
eagerLoadingOfProperties. | Poison JMS message due to ${exception.message} |
String
+| *eagerPoisonBody* (consumer) | If eagerLoadingOfProperties is enabled and
the JMS message payload (JMS body or JMS properties) is poison (cannot be
read/mapped), then set this text as the message body instead so the message can
be processed (the cause of the poison are already stored as exception on the
Exchange). This can be turned off by setting eagerPoisonBody=false. See also
the option eagerLoadingOfProperties. | Poison JMS message due to
${exception.message} | String
| *exceptionHandler* (consumer) | To let the consumer use a custom
ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this
option is not in use. By default the consumer will deal with exceptions, that
will be logged at WARN or ERROR level and ignored. | | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer
creates an exchange. | | ExchangePattern
| *exposeListenerSession* (consumer) | Specifies whether the listener session
should be exposed when consuming messages. | false | boolean
@@ -199,7 +199,7 @@ with the following path and query parameters:
| *deliveryMode* (producer) | Specifies the delivery mode to be used.
Possibles values are those defined by javax.jms.DeliveryMode. NON_PERSISTENT =
1 and PERSISTENT = 2. | | Integer
| *deliveryPersistent* (producer) | Specifies whether persistent delivery is
used by default. | true | boolean
| *explicitQosEnabled* (producer) | Set if the deliveryMode, priority or
timeToLive qualities of service should be used when sending messages. This
option is based on Spring's JmsTemplate. The deliveryMode, priority and
timeToLive options are applied to the current endpoint. This contrasts with the
preserveMessageQos option, which operates at message granularity, reading QoS
properties exclusively from the Camel In message headers. | false | Boolean
-| *formatDateHeadersToIso8601* (producer) | Sets whether date headers should
be formatted according to the ISO 8601 standard. | false | boolean
+| *formatDateHeadersToIso8601* (producer) | Sets whether JMS date properties
should be formatted according to the ISO 8601 standard. | false | boolean
| *lazyStartProducer* (producer) | Whether the producer should be started lazy
(on the first message). By starting lazy you can use this to allow CamelContext
and routes to startup in situations where a producer may otherwise fail during
starting and cause the route to fail being started. By deferring this startup
to be lazy then the startup failure can be handled during routing messages via
Camel's routing error handlers. Beware that when the first message is processed
then creating and [...]
| *preserveMessageQos* (producer) | Set to true, if you want to send message
using the QoS settings specified on the message, instead of the QoS settings on
the JMS endpoint. The following three headers are considered JMSPriority,
JMSDeliveryMode, and JMSExpiration. You can provide all or only some of them.
If not provided, Camel will fall back to use the values from the endpoint
instead. So, when using this option, the headers override the values from the
endpoint. The explicitQosEnable [...]
| *priority* (producer) | Values greater than 1 specify the message priority
when sending (where 0 is the lowest priority and 9 is the highest). The
explicitQosEnabled option must also be enabled in order for this option to have
any effect. | 4 | int
@@ -213,14 +213,14 @@ with the following path and query parameters:
| *allowAdditionalHeaders* (producer) | This option is used to allow
additional headers which may have values that are invalid according to JMS
specification. For example some message systems such as WMQ do this with header
names using prefix JMS_IBM_MQMD_ containing values with byte array or other
invalid types. You can specify multiple header names separated by comma, and
use as suffix for wildcard matching. | | String
| *allowNullBody* (producer) | Whether to allow sending messages with no body.
If this option is false and the message body is null, then an JMSException is
thrown. | true | boolean
| *alwaysCopyMessage* (producer) | If true, Camel will always make a JMS
message copy of the message when it is passed to the producer for sending.
Copying the message is needed in some situations, such as when a
replyToDestinationSelectorName is set (incidentally, Camel will set the
alwaysCopyMessage option to true, if a replyToDestinationSelectorName is set) |
false | boolean
-| *correlationProperty* (producer) | Use this JMS property to correlate
messages in InOut exchange pattern (request-reply) instead of JMSCorrelationID
property. This allows you to exchange messages with systems that do not
correlate messages using JMSCorrelationID JMS property. If used
JMSCorrelationID will not be used or set by Camel. The value of here named
property will be generated if not supplied in the header of the message under
the same name. | | String
+| *correlationProperty* (producer) | When using InOut exchange pattern use
this JMS property instead of JMSCorrelationID JMS property to correlate
messages. If set messages will be correlated solely on the value of this
property JMSCorrelationID property will be ignored and not set by Camel. | |
String
| *disableTimeToLive* (producer) | Use this option to force disabling time to
live. For example when you do request/reply over JMS, then Camel will by
default use the requestTimeout value as time to live on the message being sent.
The problem is that the sender and receiver systems have to have their clocks
synchronized, so they are in sync. This is not always so easy to archive. So
you can use disableTimeToLive=true to not set a time to live value on the sent
message. Then the message w [...]
| *forceSendOriginalMessage* (producer) | When using mapJmsMessage=false Camel
will create a new JMS message to send to a new JMS destination if you touch the
headers (get or set) during the route. Set this option to true to force Camel
to send the original JMS message that was received. | false | boolean
| *includeSentJMSMessageID* (producer) | Only applicable when sending to JMS
destination using InOnly (eg fire and forget). Enabling this option will enrich
the Camel Exchange with the actual JMSMessageID that was used by the JMS client
when the message was sent to the JMS destination. | false | boolean
| *replyToCacheLevelName* (producer) | Sets the cache level by name for the
reply consumer when doing request/reply over JMS. This option only applies when
using fixed reply queues (not temporary). Camel will by default use:
CACHE_CONSUMER for exclusive or shared w/ replyToSelectorName. And
CACHE_SESSION for shared without replyToSelectorName. Some JMS brokers such as
IBM WebSphere may require to set the replyToCacheLevelName=CACHE_NONE to work.
Note: If using temporary queues then CACHE [...]
| *replyToDestinationSelector Name* (producer) | Sets the JMS Selector using
the fixed name to be used so you can filter out your own replies from the
others when using a shared queue (that is, if you are not using a temporary
reply queue). | | String
| *streamMessageTypeEnabled* (producer) | Sets whether StreamMessage type is
enabled or not. Message payloads of streaming kind such as files, InputStream,
etc will either by sent as BytesMessage or StreamMessage. This option controls
which kind will be used. By default BytesMessage is used which enforces the
entire message payload to be read into memory. By enabling this option the
message payload is read into memory in chunks and each chunk is then written to
the StreamMessage until no [...]
-| *allowSerializedHeaders* (advanced) | Controls whether or not to include
serialized headers. Applies only when isTransferExchange() is true. This
requires that the objects are serializable. Camel will exclude any
non-serializable objects and log it at WARN level. | false | boolean
+| *allowSerializedHeaders* (advanced) | Controls whether or not to include
serialized headers. Applies only when transferExchange is true. This requires
that the objects are serializable. Camel will exclude any non-serializable
objects and log it at WARN level. | false | boolean
| *asyncStartListener* (advanced) | Whether to startup the JmsConsumer message
listener asynchronously, when starting a route. For example if a JmsConsumer
cannot get a connection to a remote JMS broker, then it may block while
retrying and/or failover. This will cause Camel to block while starting routes.
By setting this option to true, you will let routes startup, while the
JmsConsumer connects to the JMS broker using a dedicated thread in asynchronous
mode. If this option is used, the [...]
| *asyncStopListener* (advanced) | Whether to stop the JmsConsumer message
listener asynchronously, when stopping a route. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic
property binding (Camel 2.x) or the newer property binding with additional
capabilities | false | boolean
@@ -236,9 +236,9 @@ with the following path and query parameters:
| *maxMessagesPerTask* (advanced) | The number of messages per task. -1 is
unlimited. If you use a range for concurrent consumers (eg min max), then this
option can be used to set a value to eg 100 to control how fast the consumers
will shrink when less work is required. | -1 | int
| *messageConverter* (advanced) | To use a custom Spring
org.springframework.jms.support.converter.MessageConverter so you can be in
control how to map to/from a javax.jms.Message. | | MessageConverter
| *messageCreatedStrategy* (advanced) | To use the given
MessageCreatedStrategy which are invoked when Camel creates new instances of
javax.jms.Message objects when Camel is sending a JMS message. | |
MessageCreatedStrategy
-| *messageIdEnabled* (advanced) | When sending, specifies whether message IDs
should be added. This is just an hint to the JMS Broker. If the JMS provider
accepts this hint, these messages must have the message ID set to null; if the
provider ignores the hint, the message ID must be set to its normal unique
value | true | boolean
+| *messageIdEnabled* (advanced) | When sending, specifies whether message IDs
should be added. This is just an hint to the JMS broker. If the JMS provider
accepts this hint, these messages must have the message ID set to null; if the
provider ignores the hint, the message ID must be set to its normal unique
value. | true | boolean
| *messageListenerContainer Factory* (advanced) | Registry ID of the
MessageListenerContainerFactory used to determine what
org.springframework.jms.listener.AbstractMessageListenerContainer to use to
consume messages. Setting this will automatically set consumerType to Custom. |
| MessageListenerContainerFactory
-| *messageTimestampEnabled* (advanced) | Specifies whether timestamps should
be enabled by default on sending messages. This is just an hint to the JMS
Broker. If the JMS provider accepts this hint, these messages must have the
timestamp set to zero; if the provider ignores the hint, the timestamp must be
set to its normal value. | true | boolean
+| *messageTimestampEnabled* (advanced) | Specifies whether timestamps should
be enabled by default on sending messages. This is just an hint to the JMS
broker. If the JMS provider accepts this hint, these messages must have the
timestamp set to zero; if the provider ignores the hint the timestamp must be
set to its normal value. | true | boolean
| *pubSubNoLocal* (advanced) | Specifies whether to inhibit the delivery of
messages published by its own connection. | false | boolean
| *receiveTimeout* (advanced) | The timeout for receiving messages (in
milliseconds). | 1000 | long
| *recoveryInterval* (advanced) | Specifies the interval between recovery
attempts, i.e. when a connection is being refreshed, in milliseconds. The
default is 5000 ms, that is, 5 seconds. | 5000 | long
diff --git
a/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java
b/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java
index 9ada047..1da9714 100644
---
a/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java
+++
b/components/camel-amqp/src/test/java/org/apache/camel/component/amqp/AMQPRouteTest.java
@@ -16,6 +16,15 @@
*/
package org.apache.camel.component.amqp;
+import java.util.function.Consumer;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
import org.apache.activemq.broker.BrokerService;
import org.apache.camel.CamelContext;
import org.apache.camel.EndpointInject;
@@ -23,6 +32,8 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.AvailablePortFinder;
import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.qpid.jms.message.JmsMessage;
+import org.apache.qpid.jms.provider.amqp.message.AmqpJmsMessageFacade;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -94,6 +105,53 @@ public class AMQPRouteTest extends CamelTestSupport {
resultEndpoint.assertIsSatisfied();
}
+ @Test
+ public void testNoAmqpAnnotations() throws Exception {
+ resultEndpoint.expectedMessageCount(1);
+ resultEndpoint.message(0).header("cheese").isEqualTo(123);
+ // default doesn't map annotations to headers
+ resultEndpoint.message(0).header("JMS_AMQP_MA_cheese").isNull();
+ sendAmqpMessage(context.getComponent("amqp-customized",
AMQPComponent.class),
+ "ping", expectedBody, facade -> {
+ try {
+ facade.setApplicationProperty("cheese", 123);
+ facade.setTracingAnnotation("cheese", 456);
+ } catch (JMSException e) {
+ throw new RuntimeException(e);
+ }
+ });
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void testAmqpAnnotations() throws Exception {
+ resultEndpoint.expectedMessageCount(1);
+ resultEndpoint.message(0).header("cheese").isEqualTo(123);
+ resultEndpoint.message(0).header("JMS_AMQP_MA_cheese").isEqualTo(456);
+ sendAmqpMessage(context.getComponent("amqp-customized2",
AMQPComponent.class),
+ "ping2", expectedBody, facade -> {
+ try {
+ facade.setApplicationProperty("cheese", 123);
+ facade.setTracingAnnotation("cheese", 456);
+ } catch (JMSException e) {
+ throw new RuntimeException(e);
+ }
+ });
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ private void sendAmqpMessage(AMQPComponent component, String queue, String
body,
+ Consumer<AmqpJmsMessageFacade>
messageCustomizer) throws JMSException {
+ ConnectionFactory factory = component.getConnectionFactory();
+ try (Connection connection = factory.createConnection();
+ Session session = connection.createSession();
+ MessageProducer producer =
session.createProducer(session.createQueue(queue))) {
+ TextMessage message = session.createTextMessage(body);
+ messageCustomizer.accept((AmqpJmsMessageFacade) ((JmsMessage)
message).getFacade());
+ producer.send(message);
+ }
+ }
+
// Routes fixtures
@Override
@@ -101,6 +159,8 @@ public class AMQPRouteTest extends CamelTestSupport {
CamelContext camelContext = super.createCamelContext();
camelContext.getRegistry().bind("amqpConnection",
discoverAMQP(camelContext));
camelContext.addComponent("amqp-customized",
amqpComponent("amqp://localhost:" + amqpPort));
+ camelContext.addComponent("amqp-customized2",
amqpComponent("amqp://localhost:" + amqpPort));
+ camelContext.getComponent("amqp-customized2",
AMQPComponent.class).setIncludeAmqpAnnotations(true);
return camelContext;
}
@@ -112,24 +172,28 @@ public class AMQPRouteTest extends CamelTestSupport {
.to("log:routing")
.to("mock:result");
+ from("amqp-customized2:queue:ping2")
+ .to("log:routing")
+ .to("mock:result");
+
from("amqp-customized:queue:inOut")
- .setBody().constant("response");
+ .setBody().constant("response");
from("amqp-customized:topic:ping")
- .to("log:routing")
- .to("mock:result");
+ .to("log:routing")
+ .to("mock:result");
from("amqp-customized:topic:ping")
- .to("log:routing")
- .to("mock:result");
+ .to("log:routing")
+ .to("mock:result");
from("amqp-customized:queue:wildcard.>")
- .to("log:routing")
- .to("mock:result");
+ .to("log:routing")
+ .to("mock:result");
from("amqp:queue:uriEndpoint")
- .to("log:routing")
- .to("mock:result");
+ .to("log:routing")
+ .to("mock:result");
}
};
}
diff --git
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java
index c95a453..80b6069 100644
---
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java
+++
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/AMQPEndpointBuilderFactory.java
@@ -59,10 +59,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets the default connection factory to be used if a connection
- * factory is not specified for either
- * setTemplateConnectionFactory(ConnectionFactory) or
- * setListenerConnectionFactory(ConnectionFactory).
+ * The connection factory to be use. A connection factory must be
+ * configured either on the component or endpoint.
*
* The option is a: <code>javax.jms.ConnectionFactory</code> type.
*
@@ -74,10 +72,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets the default connection factory to be used if a connection
- * factory is not specified for either
- * setTemplateConnectionFactory(ConnectionFactory) or
- * setListenerConnectionFactory(ConnectionFactory).
+ * The connection factory to be use. A connection factory must be
+ * configured either on the component or endpoint.
*
* The option will be converted to a
* <code>javax.jms.ConnectionFactory</code> type.
@@ -684,11 +680,11 @@ public interface AMQPEndpointBuilderFactory {
/**
* Whether the DefaultMessageListenerContainer used in the reply
* managers for request-reply messaging allow the
- * DefaultMessageListenerContainer#runningAllowed() flag to quick stop
- * in case JmsConfiguration#isAcceptMessagesWhileStopping() is enabled,
- * and org.apache.camel.CamelContext is currently being stopped. This
- * quick stop ability is enabled by default in the regular JMS
consumers
- * but to enable for reply managers you must enable this flag.
+ * DefaultMessageListenerContainer.runningAllowed flag to quick stop in
+ * case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and
+ * org.apache.camel.CamelContext is currently being stopped. This quick
+ * stop ability is enabled by default in the regular JMS consumers but
+ * to enable for reply managers you must enable this flag.
*
* The option is a: <code>boolean</code> type.
*
@@ -702,11 +698,11 @@ public interface AMQPEndpointBuilderFactory {
/**
* Whether the DefaultMessageListenerContainer used in the reply
* managers for request-reply messaging allow the
- * DefaultMessageListenerContainer#runningAllowed() flag to quick stop
- * in case JmsConfiguration#isAcceptMessagesWhileStopping() is enabled,
- * and org.apache.camel.CamelContext is currently being stopped. This
- * quick stop ability is enabled by default in the regular JMS
consumers
- * but to enable for reply managers you must enable this flag.
+ * DefaultMessageListenerContainer.runningAllowed flag to quick stop in
+ * case JmsConfiguration#isAcceptMessagesWhileStopping is enabled, and
+ * org.apache.camel.CamelContext is currently being stopped. This quick
+ * stop ability is enabled by default in the regular JMS consumers but
+ * to enable for reply managers you must enable this flag.
*
* The option will be converted to a <code>boolean</code> type.
*
@@ -841,11 +837,11 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* If eagerLoadingOfProperties is enabled and the JMS message payload
- * (JMS body or JMS properties) (cannot be read/mapped), then set this
- * text as the message body instead so the message can be processed
(the
- * cause of the poison are already stored as exception on the
Exchange).
- * This can be turned off by setting eagerPoisonBody=false. See also
the
- * option eagerLoadingOfProperties.
+ * (JMS body or JMS properties) is poison (cannot be read/mapped), then
+ * set this text as the message body instead so the message can be
+ * processed (the cause of the poison are already stored as exception
on
+ * the Exchange). This can be turned off by setting
+ * eagerPoisonBody=false. See also the option eagerLoadingOfProperties.
*
* The option is a: <code>java.lang.String</code> type.
*
@@ -997,7 +993,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Controls whether or not to include serialized headers. Applies only
- * when isTransferExchange() is true. This requires that the objects
are
+ * when transferExchange is true. This requires that the objects are
* serializable. Camel will exclude any non-serializable objects and
log
* it at WARN level.
*
@@ -1012,7 +1008,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Controls whether or not to include serialized headers. Applies only
- * when isTransferExchange() is true. This requires that the objects
are
+ * when transferExchange is true. This requires that the objects are
* serializable. Camel will exclude any non-serializable objects and
log
* it at WARN level.
*
@@ -1496,7 +1492,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* When sending, specifies whether message IDs should be added. This is
- * just an hint to the JMS Broker. If the JMS provider accepts this
+ * just an hint to the JMS broker. If the JMS provider accepts this
* hint, these messages must have the message ID set to null; if the
* provider ignores the hint, the message ID must be set to its normal
* unique value.
@@ -1512,7 +1508,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* When sending, specifies whether message IDs should be added. This is
- * just an hint to the JMS Broker. If the JMS provider accepts this
+ * just an hint to the JMS broker. If the JMS provider accepts this
* hint, these messages must have the message ID set to null; if the
* provider ignores the hint, the message ID must be set to its normal
* unique value.
@@ -1562,9 +1558,9 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Specifies whether timestamps should be enabled by default on sending
- * messages. This is just an hint to the JMS Broker. If the JMS
provider
+ * messages. This is just an hint to the JMS broker. If the JMS
provider
* accepts this hint, these messages must have the timestamp set to
- * zero; if the provider ignores the hint, the timestamp must be set to
+ * zero; if the provider ignores the hint the timestamp must be set to
* its normal value.
*
* The option is a: <code>boolean</code> type.
@@ -1578,9 +1574,9 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Specifies whether timestamps should be enabled by default on sending
- * messages. This is just an hint to the JMS Broker. If the JMS
provider
+ * messages. This is just an hint to the JMS broker. If the JMS
provider
* accepts this hint, these messages must have the timestamp set to
- * zero; if the provider ignores the hint, the timestamp must be set to
+ * zero; if the provider ignores the hint the timestamp must be set to
* its normal value.
*
* The option will be converted to a <code>boolean</code> type.
@@ -2021,10 +2017,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets the default connection factory to be used if a connection
- * factory is not specified for either
- * setTemplateConnectionFactory(ConnectionFactory) or
- * setListenerConnectionFactory(ConnectionFactory).
+ * The connection factory to be use. A connection factory must be
+ * configured either on the component or endpoint.
*
* The option is a: <code>javax.jms.ConnectionFactory</code> type.
*
@@ -2036,10 +2030,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets the default connection factory to be used if a connection
- * factory is not specified for either
- * setTemplateConnectionFactory(ConnectionFactory) or
- * setListenerConnectionFactory(ConnectionFactory).
+ * The connection factory to be use. A connection factory must be
+ * configured either on the component or endpoint.
*
* The option will be converted to a
* <code>javax.jms.ConnectionFactory</code> type.
@@ -2277,8 +2269,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets whether date headers should be formatted according to the ISO
- * 8601 standard.
+ * Sets whether JMS date properties should be formatted according to
the
+ * ISO 8601 standard.
*
* The option is a: <code>boolean</code> type.
*
@@ -2290,8 +2282,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets whether date headers should be formatted according to the ISO
- * 8601 standard.
+ * Sets whether JMS date properties should be formatted according to
the
+ * ISO 8601 standard.
*
* The option will be converted to a <code>boolean</code> type.
*
@@ -2736,13 +2728,10 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Use this JMS property to correlate messages in InOut exchange
pattern
- * (request-reply) instead of JMSCorrelationID property. This allows
you
- * to exchange messages with systems that do not correlate messages
- * using JMSCorrelationID JMS property. If used JMSCorrelationID will
- * not be used or set by Camel. The value of here named property will
be
- * generated if not supplied in the header of the message under the
same
- * name.
+ * When using InOut exchange pattern use this JMS property instead of
+ * JMSCorrelationID JMS property to correlate messages. If set messages
+ * will be correlated solely on the value of this property
+ * JMSCorrelationID property will be ignored and not set by Camel.
*
* The option is a: <code>java.lang.String</code> type.
*
@@ -2925,7 +2914,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Controls whether or not to include serialized headers. Applies only
- * when isTransferExchange() is true. This requires that the objects
are
+ * when transferExchange is true. This requires that the objects are
* serializable. Camel will exclude any non-serializable objects and
log
* it at WARN level.
*
@@ -2940,7 +2929,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Controls whether or not to include serialized headers. Applies only
- * when isTransferExchange() is true. This requires that the objects
are
+ * when transferExchange is true. This requires that the objects are
* serializable. Camel will exclude any non-serializable objects and
log
* it at WARN level.
*
@@ -3424,7 +3413,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* When sending, specifies whether message IDs should be added. This is
- * just an hint to the JMS Broker. If the JMS provider accepts this
+ * just an hint to the JMS broker. If the JMS provider accepts this
* hint, these messages must have the message ID set to null; if the
* provider ignores the hint, the message ID must be set to its normal
* unique value.
@@ -3440,7 +3429,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* When sending, specifies whether message IDs should be added. This is
- * just an hint to the JMS Broker. If the JMS provider accepts this
+ * just an hint to the JMS broker. If the JMS provider accepts this
* hint, these messages must have the message ID set to null; if the
* provider ignores the hint, the message ID must be set to its normal
* unique value.
@@ -3490,9 +3479,9 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Specifies whether timestamps should be enabled by default on sending
- * messages. This is just an hint to the JMS Broker. If the JMS
provider
+ * messages. This is just an hint to the JMS broker. If the JMS
provider
* accepts this hint, these messages must have the timestamp set to
- * zero; if the provider ignores the hint, the timestamp must be set to
+ * zero; if the provider ignores the hint the timestamp must be set to
* its normal value.
*
* The option is a: <code>boolean</code> type.
@@ -3506,9 +3495,9 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Specifies whether timestamps should be enabled by default on sending
- * messages. This is just an hint to the JMS Broker. If the JMS
provider
+ * messages. This is just an hint to the JMS broker. If the JMS
provider
* accepts this hint, these messages must have the timestamp set to
- * zero; if the provider ignores the hint, the timestamp must be set to
+ * zero; if the provider ignores the hint the timestamp must be set to
* its normal value.
*
* The option will be converted to a <code>boolean</code> type.
@@ -3949,10 +3938,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets the default connection factory to be used if a connection
- * factory is not specified for either
- * setTemplateConnectionFactory(ConnectionFactory) or
- * setListenerConnectionFactory(ConnectionFactory).
+ * The connection factory to be use. A connection factory must be
+ * configured either on the component or endpoint.
*
* The option is a: <code>javax.jms.ConnectionFactory</code> type.
*
@@ -3963,10 +3950,8 @@ public interface AMQPEndpointBuilderFactory {
return this;
}
/**
- * Sets the default connection factory to be used if a connection
- * factory is not specified for either
- * setTemplateConnectionFactory(ConnectionFactory) or
- * setListenerConnectionFactory(ConnectionFactory).
+ * The connection factory to be use. A connection factory must be
+ * configured either on the component or endpoint.
*
* The option will be converted to a
* <code>javax.jms.ConnectionFactory</code> type.
@@ -4149,7 +4134,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Controls whether or not to include serialized headers. Applies only
- * when isTransferExchange() is true. This requires that the objects
are
+ * when transferExchange is true. This requires that the objects are
* serializable. Camel will exclude any non-serializable objects and
log
* it at WARN level.
*
@@ -4164,7 +4149,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Controls whether or not to include serialized headers. Applies only
- * when isTransferExchange() is true. This requires that the objects
are
+ * when transferExchange is true. This requires that the objects are
* serializable. Camel will exclude any non-serializable objects and
log
* it at WARN level.
*
@@ -4644,7 +4629,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* When sending, specifies whether message IDs should be added. This is
- * just an hint to the JMS Broker. If the JMS provider accepts this
+ * just an hint to the JMS broker. If the JMS provider accepts this
* hint, these messages must have the message ID set to null; if the
* provider ignores the hint, the message ID must be set to its normal
* unique value.
@@ -4660,7 +4645,7 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* When sending, specifies whether message IDs should be added. This is
- * just an hint to the JMS Broker. If the JMS provider accepts this
+ * just an hint to the JMS broker. If the JMS provider accepts this
* hint, these messages must have the message ID set to null; if the
* provider ignores the hint, the message ID must be set to its normal
* unique value.
@@ -4710,9 +4695,9 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Specifies whether timestamps should be enabled by default on sending
- * messages. This is just an hint to the JMS Broker. If the JMS
provider
+ * messages. This is just an hint to the JMS broker. If the JMS
provider
* accepts this hint, these messages must have the timestamp set to
- * zero; if the provider ignores the hint, the timestamp must be set to
+ * zero; if the provider ignores the hint the timestamp must be set to
* its normal value.
*
* The option is a: <code>boolean</code> type.
@@ -4726,9 +4711,9 @@ public interface AMQPEndpointBuilderFactory {
}
/**
* Specifies whether timestamps should be enabled by default on sending
- * messages. This is just an hint to the JMS Broker. If the JMS
provider
+ * messages. This is just an hint to the JMS broker. If the JMS
provider
* accepts this hint, these messages must have the timestamp set to
- * zero; if the provider ignores the hint, the timestamp must be set to
+ * zero; if the provider ignores the hint the timestamp must be set to
* its normal value.
*
* The option will be converted to a <code>boolean</code> type.