Menu Search

Chapter 10. System Properties

The following system properties affect the behaviour of the Client. System properties are global in nature so affect all Qpid interactions made from within the same JVM. For many options, there are equivalent Connection URL options allowing the option to be controlled at the level of the Connection.

Table 10.1. System Properties Affecting Connection Behaviour

Property NameTypeDefault ValueDescription
qpid.amqp.versionstring0-10

Sets the AMQP version to be used - currently supports one of {0-8,0-9,0-91,0-10}.

The client will begin negotiation at the specified version and only negotiate downwards if the Broker does not support the specified version.

qpid.heartbeatint

Defaults to the heartbeat value suggested by the Broker, if any.

Frequency of heartbeat messages (in seconds). A value of 0 disables heartbeating.

Two consecutive missed heartbeats will result in the connection timing out.

This can also be set per connection using the Connection URL options.

For compatibility with old client configuration, the synonym amqj.heartbeat.delay is supported.

ignore_setclientIDbooleanfalseIf a client ID is specified in the connection URL it's used or else an ID is generated. If an ID is specified after it's been set Qpid will throw an exception.

Setting this property to 'true' will disable that check and allow you to set a client ID of your choice later on.

qpid.connection_ssl_verify_hostnamebooleantrueThis property is used to turn on/off broker host name verification on SSL negotiation if SSL transport is used. It is set to 'true' by default.

Setting this property to 'false' will disable that check and allow you to ignore host name errors.

qpid.connection_compress_messagesBooleanfalse

Controls whether the client will compress messages before they they are sent.

qpid.message_compression_threshold_sizeInteger102400

The payload size beyond which the client will start to compress message payloads.


Table 10.2. Config Options For Session Behaviour

Property NameTypeDefault ValueDescription
qpid.dest_syntaxStringADDR

Addressing syntax: ADDR (Address format) or BURL (Binding URL)

max_prefetchint500

Maximum number of pre-fetched messages per Session. This can also be defaulted for sessions created on a particular connection using the Connection URL options.

qpid.use_legacy_map_messagebooleanfalse

If set will use the old map message encoding. By default the Map messages are encoded using the 0-10 map encoding.

This can also be set per connection using the Connection URL options.

qpid.jms.daemon.dispatcherbooleanfalse

Controls whether the Session dispatcher thread is a daemon thread or not. If this system property is set to true then the Session dispatcher threads will be created as daemon threads. This setting is introduced in version 0.16.


Table 10.3. Config Options For Consumer Behaviour

Property NameTypeDefault ValueDescription
qpid.declare_exchangesBooleantrue

If true, creating a consumer will also declare the exchange on the Broker (specified within the Binding URL associated with the Destination), creating it if is does not already exist.

qpid.declare_queuesBooleantrue

If true, creating a consumer will also declare the queue on the Broker (specified within the Binding URL associated with the Destination), creating it if is does not already exist.

qpid.bind_queuesBooleantrue

If true, creating a consumer will also bind the queue to the to the exchange using the routing key as a binding key. The exchange name, queue name and routing key are taken from the Binding URL associated with the Destination.

qpid.reject.behaviourStringNORMAL

Used with the maximum delivery count feature. See Section 5.6.3, “Maximum Delivery Count” for details.

sync_client_ackbooleantrue

If set true, for sessions using Session#CLIENT_ACKNOWLEDGE, a sync command is sent after every message Message#acknowledge(). This ensure that the client awaits the successful processing of the acknowledgement by server before continuing.

If false, the sync is not performed. This will improve performance but will mean duplicate messages are more likely to be received following a failure.

This can also be set per connection using the Connection URL options.


Table 10.4. Config Options For Producer Behaviour

Property NameTypeDefault ValueDescription
qpid.default_mandatoryBooleanTrue

If true, messages sent to Queue destinations for which cannot be routed to at least one queue on the Broker, will be returned to the application. See Section 5.5.1, “Mandatory Messages” for more details.

qpid.default_mandatory_topicBooleanFalse

If true, messages sent to Topic destinations for which cannot be routed to at least one queue on the Broker, will be returned to the application. See Section 5.5.1, “Mandatory Messages” for more details..

qpid.default_immediateBooleanFalse

If true, the message will be returned to the application unless the Broker is able to route the message to at least one queue with a consumer attached. See Section 5.5.3, “Immediate Messages” for more details.

qpid.flow_control_wait_failureLong60000

Used with Section 5.5.4, “Flow Control”. The amount of time (in milliseconds) to wait before timing out.

qpid.flow_control_wait_notify_periodLong5000

Used with Section 5.5.4, “Flow Control”. The frequency at which the log message informing that the producer is flow controlled .

sync_publishstring"" (disabled)

If 'all' is set then messages will be sent synchronously.

This can also be set per connection using the Connection URL options.


Table 10.5. Config Options For Threading

Property NameTypeDefault ValueDescription
qpid.thread_factorystringorg.apache.qpid.thread.DefaultThreadFactory

Specifies the thread factory to use.

If using a real time JVM, you need to set the above property to org.apache.qpid.thread.RealtimeThreadFactory.

qpid.rt_thread_priorityint20

Specifies the priority (1-99) for Real time threads created by the real time thread factory.


Table 10.6. Config Options For I/O

Property NameTypeDefault ValueDescription
qpid.sync_op_timeoutlong60000

The length of time (in milliseconds) to wait for a synchronous operation to complete.

For compatibility with older clients, the synonym amqj.default_syncwrite_timeout is supported.

qpid.tcp_nodelaybooleantrue

Sets the TCP_NODELAY property of the underlying socket. The default was changed to true as of Qpid 0.14.

This can also be set per connection using the Connection URL broker optiontcp_nodelay. options.

For compatibility with older clients, the synonym amqj.tcp_nodelay is supported.

qpid.send_buffer_sizeinteger65535

Sets the SO_SNDBUF property of the underlying socket. Added in Qpid 0.16.

For compatibility with older clients, the synonym amqj.sendBufferSize is supported.

qpid.receive_buffer_sizeinteger65535

Sets the SO_RCVBUF property of the underlying socket. Added in Qpid 0.16.

For compatibility with older clients, the synonym amqj.receiveBufferSize is supported.

qpid.failover_method_timeoutlong60000

During failover, this is the timeout for each attempt to try to re-establish the connection. If a reconnection attempt exceeds the timeout, the entire failover process is aborted.

It is only applicable for AMQP 0-8/0-9/0-9-1 clients.


Table 10.7. Config Options For Security

Property NameTypeDefault ValueDescription
qpid.sasl_mechsstring 

Restriction on the SASL mechanisms which can be used. More than one could be specified as a space separated list.

We currently support the following mechanisms: PLAIN GSSAPI EXTERNAL SCRAM-SHA-256 SCRAM-SHA-1 XOAUTH2 CRAM-MD5 XOAUTH2 ANONYMOUS.

This can also be set per connection using the Connection URL options.

qpid.sasl_protocolstringAMQP

When using GSSAPI as the SASL mechanism, sasl_protocol must be set to the principal for the qpid broker, e.g. qpidd.

This can also be set per connection using the Connection URL options.

qpid.sasl_server_namestringlocalhost

When using GSSAPI as the SASL mechanism, sasl_server must be set to the host for the SASL server, e.g. example.com.

This can also be set per connection using the Connection URL options.


Table 10.8. Config Options For Security - Standard JVM properties needed when using GSSAPI as the SASL mechanism.[a]

Property NameTypeDefault ValueDescription
javax.security.auth.useSubjectCredsOnlybooleantrue

If set to 'false', forces the SASL GASSPI client to obtain the kerberos credentials explicitly instead of obtaining from the "subject" that owns the current thread.

java.security.auth.login.configstring 

Specifies the jass configuration file.

Ex-Djava.security.auth.login.config=myjas.conf

Here is the sample myjas.conf JASS configuration file:


		com.sun.security.jgss.initiate {
		com.sun.security.auth.module.Krb5LoginModule required useTicketCache=true;
		};

		

[a] Please refer to the Java security documentation for a complete understanding of the above properties.


Table 10.9. Config Options For Security - Using SSL for securing connections or using EXTERNAL as the SASL mechanism.

Property NameTypeDefault ValueDescription
qpid.ssl_timeoutlong60000

Timeout value used by the Java SSL engine when waiting on operations.

qpid.ssl.KeyManagerFactory.algorithmstring-

The key manager factory algorithm name. If not set, defaults to the value returned from the Java runtime call KeyManagerFactory.getDefaultAlgorithm()

For compatibility with older clients, the synonym qpid.ssl.keyStoreCertType is supported.

qpid.ssl.TrustManagerFactory.algorithmstring-

The trust manager factory algorithm name. If not set, defaults to the value returned from the Java runtime call TrustManagerFactory.getDefaultAlgorithm()

For compatibility with older clients, the synonym qpid.ssl.trustStoreCertType is supported.


Table 10.10. Config Options For Security - Standard JVM properties needed when Using SSL for securing connections or using EXTERNAL as the SASL mechanism.[a]

Property NameTypeDefault ValueDescription
javax.net.ssl.keyStorestringjvm default

Specifies the key store path.

This can also be set per connection using the Connection URL options.

javax.net.ssl.keyStorePasswordstringjvm default

Specifies the key store password.

This can also be set per connection using the Connection URL options.

javax.net.ssl.trustStorestringjvm default

Specifies the trust store path.

This can also be set per connection using the Connection URL options.

javax.net.ssl.trustStorePasswordstringjvm default

Specifies the trust store password.

This can also be set per connection using the Connection URL options.

[a] Qpid allows you to have per connection key and trust stores if required. If specified per connection, the JVM arguments are ignored.