Red Hat AMQ 6
As of February 2025, Red Hat is no longer supporting Red Hat AMQ 6. If you are using AMQ 6, please upgrade: Migrating to AMQ 7.Este conteúdo não está disponível no idioma selecionado.
Chapter 8. Advanced Message Queuing Protocol (AMQP)
Abstract
					Oasis AMQP is an open standard application protocol for messaging. In contrast to JMS, AMQP standardizes the wire protocol, not the programming API, thus facilitating interoperability at the transport level.
				
URI syntax
Copiar o linkLink copiado para a área de transferência!
			The URI syntax given here is valid only for specifying the endpoint in a transport connector element (broker endpoint).
		
			A basic AMQP endpoint has the following URI syntax:
		
amqp://Host:[Port]?transportOptions
amqp://Host:[Port]?transportOptions
			An AMQP endpoint with NIO support has the following syntax:
		
amqp+nio://Host:[Port]?transportOptions
amqp+nio://Host:[Port]?transportOptions
			A secure AMQP endpoint has the following URI syntax:
		
amqp+ssl://Host:[Port]?transportOptions
amqp+ssl://Host:[Port]?transportOptionsIdleTimeout
Copiar o linkLink copiado para a área de transferência!
			Connections are subject to a configurable idle timeout threshold. The idle timeout is measured in milliseconds.
		
			To configure the timeout threshold, use the following URI option:
		
transport.wireFormat.idleTimeout=10000
transport.wireFormat.idleTimeout=10000
			It can be used in the following way:
		
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?transport.wireFormat.idleTimeout=10000&...."/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?transport.wireFormat.idleTimeout=10000&...."/>
			Replace 
10000 in the example with the number of milliseconds after which the connection will timeout due to inactivity.
		Security
Copiar o linkLink copiado para a área de transferência!
			The AMQP adapter is fully integrated with Apache ActiveMQ security. This means that the broker accepts SASL (Simple Authentication and Security Layer) authentication and any authorization settings configured on the broker will be applied.
		
			SSL security can also be enabled for AMQP. To enable SSL, configure the broker's 
sslContext element in the XML configuration and use the secure AMQP scheme, amqp+ssl, to define the AMQP URI in the broker's transportConnector element. For more details about SSL security, see the "Security Guide".
		SSL transport options
Copiar o linkLink copiado para a área de transferência!
			In addition to the options supported by the non-secure AMQP transports, the SSL transport also supports the options for configuring the 
SSLServerSocket created for the connection. These options are listed in Table 2.1, “SSL Transport Options”.
		Warning
				If you are planning to enable SSL/TLS security, you must ensure that you explicitly disable the SSLv3 protocol, in order to safeguard against the Poodle vulnerability (CVE-2014-3566). For more details, see Disabling SSLv3 in JBoss Fuse 6.x and JBoss A-MQ 6.x.
			
Configuring broker SSL options
Copiar o linkLink copiado para a área de transferência!
			On the broker side, you must specify an SSL transport option using the syntax 
transport.OptionName. For example, to enable an AMQP SSL port on a broker, you would add the following transport element:
		<transportConnector name="amqpssl" uri="amqp+ssl://localhost:61617?transport.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2" />
<transportConnector name="amqpssl" uri="amqp+ssl://localhost:61617?transport.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2" />Tip
			Remember, if you are specifying more than one option in the context of XML, you need to escape the ampersand, 
&, between options as &.
		Configuring client SSL options
Copiar o linkLink copiado para a área de transferência!
			On the client side, you must specify an SSL transport option using the syntax 
socket.OptionName. For example, to connect to an AMQP SSL port, you would use a URL like the following:
		amqp+ssl://localhost:61617?socket.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2
amqp+ssl://localhost:61617?socket.enabledProtocols=TLSv1,TLSv1.1,TLSv1.2Mapping from AMQP to JMS
Copiar o linkLink copiado para a área de transferência!
			Because AMQP is not a JMS compliant protocol, the AMQP messages and their headers are defined in a different format from JMS. It is therefore necessary to map AMQP messages to JMS format. The mapping is implemented by a transformer and the transformer type can be selected by specifying the 
transport.transformer option on the AMQP endpoint.
		
			For example, the following transport connector selects the 
jms transformer type:
		<transportConnector name="amqp" uri="amqp://localhost:5672?transport.transformer=jms"/>
<transportConnector name="amqp" uri="amqp://localhost:5672?transport.transformer=jms"/>AMQP-to-JMS transformers
Copiar o linkLink copiado para a área de transferência!
			Table 8.1, “AMQP-to-JMS Transformer Types” lists the available transformer types and describes the basic characteristics of each mapping.
		
| Transformer | Description | 
|---|---|
| native | (Default) Wraps the bytes of the AMQP message into a JMS BytesMessage, and maps the AMQP message headers to JMS message headers. | 
| raw | Wraps the bytes of the AMQP message into a JMS BytesMessage. | 
| jms | Maps the body of the AMQP message to JMS body, and maps the AMQP message headers to JMS message headers. | 
Header mapping for all transformers
Copiar o linkLink copiado para a área de transferência!
			The JMS headers shown in the following table are always created, no matter which transformer type is selected.
		
| AMQP Header | JMS Header | 
|---|---|
| JMS_AMQP_NATIVE | |
| message-format | JMS_AMQP_MESSAGE_FORMAT | 
			The 
JMS_AMQP_NATIVE header is a boolean type, which indicates whether or not the JMS message body is a direct copy of the raw AMQP message body. It is set to true for the native and jms transformer types and false for the jms transformer type.
		Header mapping for native or jms transformers
Copiar o linkLink copiado para a área de transferência!
			The JMS headers shown in the following table are mapped from AMQP headers, if the 
native or jms transformer type is selected.
		| AMQP Header | JMS Header | 
|---|---|
| header.durable | JMSDeliveryMode | 
| header.priority | JMSPriority | 
| header.ttl | JMSExpiration | 
| header.first-acquirer | JMS_AMQP_FirstAcquirer | 
| header.deliveryCount | JMSXDeliveryCount | 
| delivery-annotations.name | JMS_AMQP_DA_name | 
| message-annotations.x-opt-jms-type | JMSType | 
| message-annotations.x-opt-to-type | Type of the JMSDestination | 
| message-annotations.x-opt-reply-type | Type of the JMSReplyTo | 
| message-annotations.name | JMS_AMQP_MA_name | 
| application-properties.JMSXGroupID | JMSXGroupID | 
| application-properties.JMSXGroupSequence | JMSXGroupSequence | 
| application-properties.JMSXUserID | JMSXUserID | 
| application-properties.name | name | 
| properties.message-id | JMSMessageID | 
| properties.user-id | JMSXUserID | 
| properties.to | JMSDestination | 
| properties.subject | JMS_AMQP_Subject | 
| properties.reply-to | JMSReplyTo | 
| properties.correlation-id | JMSCorrelationID | 
| properties.content-type | JMS_AMQP_ContentType | 
| properties.content-encoding | JMS_AMQP_ContentEncoding | 
| properties.creation-time | JMSTimestamp | 
| properties.group-sequence | JMSXGroupSequence | 
| properties.reply-to-group-id | JMS_AMQP_ReplyToGroupID | 
| footer.name | JMS_AMQP_FT_name | 
Note
				The 
properties.user-id property is decoded as a UTF-8 String.
			Default header values
Copiar o linkLink copiado para a área de transferência!
			When mapping AMQP message properties to JMS header values, the following default JMS header values are used:
		
- JMS_AMQP_NATIVE
- Defaults totrue, if the transformer isnativeorraw, otherwisefalse.
- JMSDeliveryMode
- Defaults tojavax.jms.Message.DEFAULT_DELIVERY_MODE.
- JMSPriority
- Defaults tojavax.jms.Message.DEFAULT_PRIORITY.
- JMSExpiration
- Defaults tojavax.jms.Message.DEFAULT_TIME_TO_LIVE.
- JMSDestinationtype
- Defaults toqueue.
- JMSReplyTotype
- Defaults toqueue.
- JMSMessageID
- Auto-generated, if not set.
Property type mapping
Copiar o linkLink copiado para a área de transferência!
			AMQP property types are converted to Java types as shown in the following table:
		
| AMQP Type | Java Type | Notes | 
|---|---|---|
| bool | Boolean | |
| byte | Byte | |
| short | Short | |
| int | Integer | |
| long | Long | |
| ubyte | ByteorShort | Shortis used, ifvalue > Byte.MAX_VALUE | 
| ushort | ShortorInteger | Integeris used ifvalue > Short.MAX_VALUE | 
| uint | IntegerorLong | Longis used, ifvalue > Integer.MAX_VALUE | 
| ulong | Long | |
| double | Double | |
| float | Float | |
| symbol | String | |
| binary | String | Hex encoding of the binary value | 
Message body mapping
Copiar o linkLink copiado para a área de transferência!
			When the 
jms transformer type is selected, the AMQP message body is mapped to a JMS message type, as shown in the following table:
		| AMQP Body Type | JMS Message Type | 
|---|---|
| null | Message | 
| Data | BytesMessage | 
| AmqpSequence | StreamMessage | 
| AmqpValueholding anull | Message | 
| AmqpValueholding aString | TextMessage | 
| AmqpValueholding abinary | BytesMessage | 
| AmqpValueholding alist | StreamMessage | 
| AmqpValue | ObjectMessage |