3.7. Configuring the JMS Client
The Qpid JMS Client allows several configuration options to customize it's behaviour at different levels of granualarity.
- JVM level using JVM arguments : Configuration that affects all connections, sessions, consumers and producers created within that JVM.Ex.
-Dmax_prefetch=1000
property specifies the message credits to use. - Connection level using Connection/Broker properties : Affects the respective connection and sessions, consumers and produces created by that connection.Ex.
amqp://guest:guest@test/test?max_prefetch='1000' &brokerlist='tcp://localhost:5672'
property specifies the message credits to use. This overrides any value specified via the JVM argumentmax_prefetch
.Please refer to the Section 3.3.2, “Connection URLs” section for a complete list of all properties and how to use them. - Destination level using Addressing options : Affects the producer(s) and consumer(s) created using the respective destination.Ex.
my-queue; {create: always, link:{capacity: 10}}
, wherecapacity
option specifies the message credits to use. This overrides any connection level configuration.
Some of these config options are available at all three levels (Ex.
max_prefetch
), while others are available only at JVM or connection level.
3.7.1. Qpid JVM Arguments
Property Name | Type | Default Value | Description |
---|---|---|---|
qpid.amqp.version | string | 0-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.heartbeat | int | 120 (secs) |
The heartbeat interval in seconds. Two consective misssed heartbeats will result in the connection timing out. This can also be set per connection using the Connection URL options.
|
ignore_setclientID | boolean | false |
If 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.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
qpid.session.command_limit | int | 65536 | Limits the # of unacked commands |
qpid.session.byte_limit | int | 1048576 | Limits the # of unacked commands in terms of bytes |
qpid.use_legacy_map_message | boolean | false |
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.dispatcher | boolean | false |
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.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
max_prefetch | int | 500 |
Maximum number of pre-fetched messages per consumer. This can also be defaulted for consumers created on a particular connection using the Connection URL options, or per destination (see the
capacity option under link properties in addressing)
|
qpid.session.max_ack_delay | long | 1000 (ms) |
Timer interval to flush message acks in buffer when using AUTO_ACK and DUPS_OK.
When using the above ack modes, message acks are batched and sent if one of the following conditions are met (which ever happens first).
The ack timer can be disabled by setting it to 0.
|
sync_ack | boolean | false |
If set, each message will be acknowledged synchronously. When using AUTO_ACK mode, you need to set this to "true", in order to get the correct behaviour as described by the JMS spec.
This is set to false by default for performance reasons, therefore by default AUTO_ACK behaves similar to DUPS_OK.
This can also be set per connection using the Connection URL options.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
sync_publish | string | "" (disabled) |
If one of {persistent|all} is set then persistent messages or all messages will be sent synchronously.
This can also be set per connection using the Connection URL options.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
qpid.thread_factory | string | org.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_priority | int | 20 |
Specifies the priority (1-99) for Real time threads created by the real time thread factory.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
qpid.transport | string | org.apache.qpid.transport.network.io.IoNetworkTransport |
The transport implementation to be used.
A user could specify an alternative transport mechanism that implements the interface
org.apache.qpid.transport.network.OutgoingNetworkTransport .
|
qpid.sync_op_timeout | long | 60000 |
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_nodelay | boolean | true |
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 options.
For compatibility with older clients, the synonym
amqj.tcp_nodelay is supported.
|
qpid.send_buffer_size | integer | 65535 |
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_size | integer | 65535 |
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_timeout | long | 60000 |
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.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
qpid.sasl_mechs | string | PLAIN |
The SASL mechanism to be used. More than one could be specified as a comma separated list.
We currently support the following mechanisms {PLAIN | GSSAPI | EXTERNAL}.
This can also be set per connection using the Connection URL options.
|
qpid.sasl_protocol | string | AMQP |
When using GSSAPI as the SASL mechanism,
sasl_protocol must be set to the principal for the qpidd broker, e.g. qpidd .
This can also be set per connection using the Connection URL options.
|
qpid.sasl_server_name | string | localhost |
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.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
javax.security.auth.useSubjectCredsOnly | boolean | true |
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.config | string |
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.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
qpid.ssl_timeout | long | 60000 |
Timeout value used by the Java SSL engine when waiting on operations.
|
qpid.ssl.KeyManagerFactory.algorithm | string | - |
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.algorithm | string | - |
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.
|
Property Name | Type | Default Value | Description |
---|---|---|---|
javax.net.ssl.keyStore | string | jvm default |
Specifies the key store path.
This can also be set per connection using the Connection URL options.
|
javax.net.ssl.keyStorePassword | string | jvm default |
Specifies the key store password.
This can also be set per connection using the Connection URL options.
|
javax.net.ssl.trustStore | string | jvm default |
Specifies the trust store path.
This can also be set per connection using the Connection URL options.
|
javax.net.ssl.trustStorePassword | string | jvm 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.
|