Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,31 @@
"trustManager": { "kind": "property", "displayName": "Trust Manager", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "javax.net.ssl.TrustManager", "deprecated": false, "autowired": false, "secret": false, "description": "Configure SSL trust manager, SSL should be enabled for this option to be effective" },
"username": { "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "defaultValue": "guest", "description": "Username in case of authenticated access" }
},
"headers": {
"CamelRabbitmqRoutingKey": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Consumer: The routing key that was used to receive the message, or the routing key that will be used when producing a message Producer: The routing key that will be used when sending the message" },
"CamelRabbitmqExchangeOverrideName": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Used for force sending the message to this exchange instead of the endpoint configured name on the producer" },
"CamelRabbitmqExchangeName": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Consumer: The exchange the message was received from Producer: The exchange the message was received from" },
"CamelRabbitmqContentType": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The contentType to set on the RabbitMQ message" },
"CamelRabbitmqPriority": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The priority header to set on the RabbitMQ message" },
"CamelRabbitmqDeliveryTag": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The rabbitmq delivery tag of the received message" },
"CamelRabbitmqRedeliveryTag": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Whether the message is a redelivered" },
"CamelRabbitmqCorrelationId": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The correlationId to set on the RabbitMQ message." },
"CamelRabbitmqMessageId": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The message id to set on the RabbitMQ message." },
"CamelRabbitmqDeliveryMode": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "If the message should be persistent or not" },
"CamelRabbitmqUserId": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The userId to set on the RabbitMQ message" },
"CamelRabbitmqClusterId": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The clusterId to set on the RabbitMQ message" },
"CamelRabbitmqRequestTimeout": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds)" },
"CamelRabbitmqReplyTo": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The replyTo to set on the RabbitMQ message" },
"CamelRabbitmqContentEncoding": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The contentEncoding to set on the RabbitMQ message" },
"CamelRabbitmqType": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type to set on the RabbitMQ message" },
"CamelRabbitmqExpiration": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The expiration to set on the RabbitMQ message" },
"CamelRabbitmqTimestamp": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "java.util.Date", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The timestamp to set on the RabbitMQ message" },
"CamelRabbitmqAppId": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The appId to set on the RabbitMQ message" },
"CamelRabbitmqRequeue": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "This is used by the consumer to control rejection of the message. When the consumer is complete processing the exchange, and if the exchange failed, then the consumer is going to reject the message from the RabbitMQ broker. The value of this header controls this behavior. If the value is false (by default) then the message is discarded\/dead-lettered. If the value is true, then the message is re-queued." },
"CamelRabbitmqMandatory": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The flag telling the server how to react if the message cannot be routed to a queue." },
"CamelRabbitmqImmediate": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The flag telling the server how to react if the message cannot be routed to a queue consumer immediately." },
"CamelMessageTimestamp": { "kind": "header", "displayName": "", "group": "common", "label": "", "required": false, "javaType": "long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The timestamp of the RabbitMQ message" }
},
"properties": {
"exchangeName": { "kind": "path", "displayName": "Exchange Name", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The exchange name determines the exchange to which the produced messages will be sent to. In the case of consumers, the exchange name determines the exchange the queue will be bound to." },
"addresses": { "kind": "parameter", "displayName": "Addresses", "group": "common", "label": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "If this option is set, camel-rabbitmq will try to create connection based on the setting of option addresses. The addresses value is a string which looks like server1:12345, server2:12345" },
Expand Down
72 changes: 3 additions & 69 deletions components/camel-rabbitmq/src/main/docs/rabbitmq-component.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -96,75 +96,9 @@ The `ConnectionFactory` is auto-detected by default, so you can just do

In case you have multiple connection factories in your application or multiple connection factories in your registry, don't forget to set the `autoDetectConnectionFactory` to false.

== Message Headers

The following headers are set on exchanges when consuming messages.

[width="100%",cols="10%,90%",options="header",]
|===
|Property |Value

|`CamelRabbitmqRoutingKey` |The routing key that was used to receive the message, or the routing key
that will be used when producing a message

|`CamelRabbitmqExchangeName` |The exchange the message was received from

|`CamelRabbitmqDeliveryTag` |The rabbitmq delivery tag of the received message

|`CamelRabbitmqRedeliveryTag` |Whether the message is a redelivered

|`CamelRabbitmqRequeue` |This is used by the consumer to control rejection of the
message. When the consumer is complete processing the exchange, and if
the exchange failed, then the consumer is going to reject the message
from the RabbitMQ broker. The value of this header controls this
behavior. If the value is false (by default) then the message is
discarded/dead-lettered. If the value is true, then the message is
re-queued.
|===

The following headers are used by the producer. If these are set on the
camel exchange then they will be set on the RabbitMQ message.

[width="100%",cols="10%,90%",options="header",]
|===
|Property |Value

|`CamelRabbitmqRoutingKey` |The routing key that will be used when sending the message

|`CamelRabbitmqExchangeName` |The exchange the message was received from

|`CamelRabbitmqExchangeOverrideName` |Used for force sending the message to this exchange instead of the endpoint configured name on the producer

|`CamelRabbitmqContentType` |The contentType to set on the RabbitMQ message

|`CamelRabbitmqPriority` |The priority header to set on the RabbitMQ message

|`CamelRabbitmqCorrelationId` |The correlationId to set on the RabbitMQ message

|`CamelRabbitmqMessageId` |The message id to set on the RabbitMQ message

|`CamelRabbitmqDeliveryMode` |If the message should be persistent or not

|`CamelRabbitmqUserId` |The userId to set on the RabbitMQ message

|`CamelRabbitmqClusterId` |The clusterId to set on the RabbitMQ message

|`CamelRabbitmqReplyTo` |The replyTo to set on the RabbitMQ message

|`CamelRabbitmqContentEncoding` |The contentEncoding to set on the RabbitMQ message

|`CamelRabbitmqType` |The type to set on the RabbitMQ message

|`CamelRabbitmqExpiration` |The expiration to set on the RabbitMQ message

|`CamelRabbitmqTimestamp` |The timestamp to set on the RabbitMQ message

|`CamelRabbitmqAppId` |The appId to set on the RabbitMQ message
|===

Headers are set by the consumer once the message is received. The
producer will also set the headers for downstream processors once the
exchange has taken place.
// component headers: START
include::partial$component-endpoint-headers.adoc[]
// component headers: END

== Troubleshooting headers

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,30 +20,73 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.apache.camel.Exchange;
import org.apache.camel.spi.Metadata;

public final class RabbitMQConstants {

@Metadata(description = "*Consumer:* The routing key that was used to receive the message, or the routing key\n" +
"that will be used when producing a message\n " +
"*Producer:* The routing key that will be used when sending the message",
javaType = "String")
public static final String ROUTING_KEY = "CamelRabbitmqRoutingKey";
@Metadata(description = "Used for force sending the message to this exchange instead of the endpoint configured name on the producer",
javaType = "String")
public static final String EXCHANGE_OVERRIDE_NAME = "CamelRabbitmqExchangeOverrideName";
@Metadata(description = "*Consumer:* The exchange the message was received from\n " +
"*Producer:* The exchange the message was received from",
javaType = "String")
public static final String EXCHANGE_NAME = "CamelRabbitmqExchangeName";
@Metadata(description = "The contentType to set on the RabbitMQ message", javaType = "String")
public static final String CONTENT_TYPE = "CamelRabbitmqContentType";
@Metadata(description = "The priority header to set on the RabbitMQ message", javaType = "int")
public static final String PRIORITY = "CamelRabbitmqPriority";
@Metadata(description = "The rabbitmq delivery tag of the received message", javaType = "long")
public static final String DELIVERY_TAG = "CamelRabbitmqDeliveryTag";
@Metadata(description = "Whether the message is a redelivered", javaType = "boolean")
public static final String REDELIVERY_TAG = "CamelRabbitmqRedeliveryTag";
@Metadata(description = "The correlationId to set on the RabbitMQ message.", javaType = "String")
public static final String CORRELATIONID = "CamelRabbitmqCorrelationId";
@Metadata(description = "The message id to set on the RabbitMQ message.", javaType = "String")
public static final String MESSAGE_ID = "CamelRabbitmqMessageId";
@Metadata(description = "If the message should be persistent or not", javaType = "Integer")
public static final String DELIVERY_MODE = "CamelRabbitmqDeliveryMode";
@Metadata(description = "The userId to set on the RabbitMQ message", javaType = "String")
public static final String USERID = "CamelRabbitmqUserId";
@Metadata(description = "The clusterId to set on the RabbitMQ message", javaType = "String")
public static final String CLUSTERID = "CamelRabbitmqClusterId";
@Metadata(description = "The timeout for waiting for a reply when using the InOut Exchange Pattern (in milliseconds)",
javaType = "long")
public static final String REQUEST_TIMEOUT = "CamelRabbitmqRequestTimeout";
@Metadata(description = "The replyTo to set on the RabbitMQ message", javaType = "String")
public static final String REPLY_TO = "CamelRabbitmqReplyTo";
@Metadata(description = "The contentEncoding to set on the RabbitMQ message", javaType = "String")
public static final String CONTENT_ENCODING = "CamelRabbitmqContentEncoding";
@Metadata(description = "The type to set on the RabbitMQ message", javaType = "String")
public static final String TYPE = "CamelRabbitmqType";
@Metadata(description = "The expiration to set on the RabbitMQ message", javaType = "String")
public static final String EXPIRATION = "CamelRabbitmqExpiration";
@Metadata(description = "The timestamp to set on the RabbitMQ message", javaType = "java.util.Date")
public static final String TIMESTAMP = "CamelRabbitmqTimestamp";
@Metadata(description = "The appId to set on the RabbitMQ message", javaType = "String")
public static final String APP_ID = "CamelRabbitmqAppId";
@Metadata(description = "This is used by the consumer to control rejection of the\n" +
"message. When the consumer is complete processing the exchange, and if\n" +
"the exchange failed, then the consumer is going to reject the message\n" +
"from the RabbitMQ broker. The value of this header controls this\n" +
"behavior. If the value is false (by default) then the message is\n" +
"discarded/dead-lettered. If the value is true, then the message is\n" +
"re-queued.",
javaType = "boolean")
public static final String REQUEUE = "CamelRabbitmqRequeue";
@Metadata(description = "The flag telling the server how to react if the message cannot be routed to a queue.",
javaType = "Boolean")
public static final String MANDATORY = "CamelRabbitmqMandatory";
@Metadata(description = "The flag telling the server how to react if the message cannot be routed to a queue consumer immediately.",
javaType = "Boolean")
public static final String IMMEDIATE = "CamelRabbitmqImmediate";
@Metadata(description = "The timestamp of the RabbitMQ message", javaType = "long")
public static final String MESSAGE_TIMESTAMP = Exchange.MESSAGE_TIMESTAMP;
public static final String RABBITMQ_DEAD_LETTER_EXCHANGE = "x-dead-letter-exchange";
public static final String RABBITMQ_DEAD_LETTER_ROUTING_KEY = "x-dead-letter-routing-key";
public static final String RABBITMQ_DIRECT_REPLY_EXCHANGE = "";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
* Send and receive messages from <a href="http://www.rabbitmq.com/">RabbitMQ</a> instances.
*/
@UriEndpoint(firstVersion = "2.12.0", scheme = "rabbitmq", title = "RabbitMQ", syntax = "rabbitmq:exchangeName",
category = { Category.MESSAGING })
category = { Category.MESSAGING }, headersClass = RabbitMQConstants.class)
public class RabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint {
// header to indicate that the message body needs to be de-serialized
public static final String SERIALIZE_HEADER = "CamelSerialize";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ private void populateMessageHeadersFromRabbitMQHeaders(final Message message, fi
}
}
if (properties.getTimestamp() != null) {
message.setHeader(Exchange.MESSAGE_TIMESTAMP, properties.getTimestamp().getTime());
message.setHeader(RabbitMQConstants.MESSAGE_TIMESTAMP, properties.getTimestamp().getTime());
}
}

Expand Down
Loading