20.5. Connection URLs

In JNDI properties, a Connection URL specifies properties for a connection. The format for a Connection URL is:
amqp://[<user>:<pass>@][<clientid>]<virtualhost>[?<option>='<value>'[&<option>='<value>']]
For instance, the following Connection URL specifies a user name, a password, a client ID, a virtual host ("test"), a broker list with a single broker, and a TCP host with the host name localhost using port 5672:
amqp://username:password@clientid/test?brokerlist='tcp://localhost:5672'
Apache Qpid supports the following properties in Connection URLs:

Table 20.1. Connection URL Properties

Option Type Description
brokerlist
The broker to use for this connection. In the current release, precisely one broker must be specified.
max_prefetch
Integer
The maximum number of pre-fetched messages per destination.
sync_publish
{'persistent' | 'transient' | 'all' | ''}
A sync command is sent after every persistent or transient message to guarantee that it has been received.
persistent sets this behavior for persistent messages.
transient sets this behavior for transient messages only.
all syncs both type of messages, however the default behavior '' also has the same effect.
sync_ack
Boolean
A sync command is sent after every acknowledgment to guarantee that it has been received.
use_legacy_map_msg_format
Boolean
If you are using JMS Map messages and deploying a new client with any JMS client older than 0.7 release, you must set this to true to ensure the older clients can understand the map message encoding.
failover
{'roundrobin' | 'failover_exchange' | 'singlebroker' | 'nofailover' | '<class>'}
  • roundrobin will try each broker given in the broker list.
  • failover_exchange connects to the initial broker given in the broker URL and will receive membership updates via the failover exchange.
  • singlebroker connects to the initial broker only and does not support failover.
  • nofailover disables all retry and failover logic.
  • Any other value is interpreted as a classname which must implement the org.apache.qpid.jms.failover.FailoverMethod interface.
ssl
Boolean
If ssl='true', use SSL for all broker connections. Overrides any per-broker settings in the brokerlist entries. If not specified, the brokerlist entry for each given broker is used to determine whether SSL is used.

Broker list URL

Broker lists are specified using a URL in this format:
brokerlist=<transport>://<host>[:<port>](?<param>=<value>)?(&<param>=<value>)*
For instance, this is a typical broker list URL:
brokerlist='tcp://localhost:5672'
A broker list can contain more than one broker address; if so, the connection is made to the first broker in the list that is available. In general, it is better to use the failover exchange when using multiple brokers, since it allows applications to fail over if a broker goes down.

Example 20.1. Broker Lists

A broker list can specify properties to be used when connecting to the broker, such as security options. This broker list specifies options for a Kerberos connection using GSSAPI:
amqp://guest:guest@test/test?sync_ack='true'
	  &brokerlist='tcp://ip1:5672?sasl_mechs='GSSAPI''
This broker list specifies SSL options:
amqp://guest:guest@test/test?sync_ack='true'
	  &brokerlist='tcp://ip1:5672?ssl='true'&ssl_cert_alias='cert1''
This broker list specifies two brokers using the connectdelay and retries broker options. It also illustrates the failover connection URL property.
amqp://guest:guest@/test?failover='roundrobin?cyclecount='2''
	  &brokerlist='tcp://ip1:5672?retries='5'&connectdelay='2000';tcp://ip2:5672?retries='5'&connectdelay='2000''
The following broker list URL options are supported:

Table 20.2. Broker List URL Options

Option Type Description
idle_timeout
Integer
Frequency of idle_timeout messages (in seconds)
sasl_mechs
--
For secure applications, we suggest CRAM-MD5, DIGEST-MD5, or GSSAPI. The ANONYMOUS method is not secure. The PLAIN method is secure only when used together with SSL. For Kerberos, sasl_mechs must be set to GSSAPI, sasl_protocol must be set to the principal for the qpidd broker, e.g. qpidd/, and sasl_server must be set to the host for the SASL server, e.g. sasl.com. SASL External is supported using SSL certification, e.g. ssl='true'&sasl_mechs='EXTERNAL'
sasl_encryption
Boolean
If sasl_encryption='true', the JMS client attempts to negotiate a security layer with the broker using GSSAPI to encrypt the connection. Note that for this to happen, GSSAPI must be selected as the sasl_mech.
ssl
Boolean
If ssl='true', the JMS client will encrypt the connection using SSL.
tcp_nodelay
Boolean
If tcp_nodelay='true', TCP packet batching is disabled.
sasl_protocol
--
Used only for Kerberos. sasl_protocol must be set to the principal for the qpidd broker, e.g. qpidd/
sasl_server
--
For Kerberos, sasl_mechs must be set to GSSAPI, sasl_server must be set to the host for the SASL server, e.g. sasl.com.
trust_store
String
Path to Kerberos trust store
trust_store_password
String
Kerberos trust store password
key_store
String
Path to Kerberos key store
key_store_password
String
Kerberos key store password
ssl_verify_hostname
Boolean
When using SSL you can enable hostname verification by using "ssl_verify_hostname=true" in the broker URL.
ssl_cert_alias
String
If multiple certificates are present in the keystore, the alias will be used to extract the correct certificate.
retries integer
The number of times to retry connection to each broker in the broker list. Defaults to 1.
connectdelay integer
Length of time (in milliseconds) to wait before attempting to reconnect. Defaults to 0.
connecttimeout integer
Length of time (in milliseconds) to wait for the socket connection to succeed. A value of 0 represents an infinite timeout, i.e. the connection attempt will block until established or an error occurs. Defaults to 30000.
tcp_nodelay Boolean If tcp_nodelay='true', TCP packet batching is disabled. Defaults to true since Qpid 0.14.