Qpid JMS connection factory
Creates a Qpid JMS client connection factory. This can be used to connect to (remote) servers using the AMQP protocol. Advanced Message Queuing Protocol (AMQP) is an open internet protocol for reliably sending and receiving messages.
The Prefetch Policy controls how many messages the broker can send to the client and be held in a prefetch buffer for each consumer instance.
Prefeching messages can speed up message processing since there will always be messages waiting on the client as opposed to having to wait after every message acknowledgement for the broker to send another message.
However, if you use the default value you will probably not see desirable behaviour in the following cases:
When using Session.Transacted and the session is rollback, the message that was received and failed to be processed is sent back to the server as well as all the mesages in the buffer. Meaning that when the number of max redeliveries for the first failed message is reached, also the messages in the buffer will have reach the same number of redeliveries and will be removed from the queue even if they were not actually processed by the client.
When using a Competing Consumers pattern, prefetch can give the appearance of unequal division of work.
When message size is large and you do not wish the memory footprint of the application to grow (or suffer an OutOfMemoryError).
When using special queue types (such as LVQs, Sorted Queue and Priority Queues).
To disabled message buffering set 0. This will cause the consumer to poll for messages, one at a time, without caching on the client.
Large prefetch values are recommended for high performance with high message volumes. However, for lower message volumes, where each message takes a long time to process, the prefetch should be set to 1. This ensures that a consumer is only processing one message at a time.
The Redelivery Policy controls how redelivered messages are handled on the client.
The MessageID Policy controls the type of the Message ID assigned to messages sent from the client.
The Presettle Policy controls when a producer or consumer instance will be configured to use AMQP presettled messaging semantics.
The Deserialization Policy provides a means of controlling which types are trusted to be deserialized from the object stream while retrieving the body from an incoming JMS ObjectMessage composed of serialized Java Object content. This allows specifying a whitelist and a blacklist of Java class or package names.
By default, all types are trusted during attempt to deserialize the body.
With failover enabled the client can reconnect to another server automatically when connection to the current server is lost for some reason. In addition, this can be used distribute client connections more evenly across multiple remote peers in a clustered setup.
Default connection settings that will be used for any of the connectors. These settings can be overriden for each connector individually.
Connection settings for each individual connector that can be used by this connection factory. At least the host and port have to be specified.
Failover
With failover enabled the client can reconnect to another server automatically when connection to the current server is lost for some reason. In addition, this can be used distribute client connections more evenly across multiple remote peers in a clustered setup.
Default connection settings that will be used for any of the connectors. These settings can be overriden for each connector individually.
_id
Reference to another bean that this bean depends on. This means that the other bean must be created and started before this bean, and this bean must be destroyed before the other bean.
Normally this can automatically be determined by looking at how beans reference each other. Sometimes however there is an implicit dependency, for example between a JMS server and JMS connection factory: this is implicit because the server opens a port to accept connections and the connection factory then connects using this port, but the beans do not actually reference each other. In these cases to prevent problems with startup/shutdown ordering, you can make this dependency explicit with this setting.
_id
Reference to another bean that this bean depends on. This means that the other bean must be created and started before this bean, and this bean must be destroyed before the other bean.
Normally this can automatically be determined by looking at how beans reference each other. Sometimes however there is an implicit dependency, for example between a JMS server and JMS connection factory: this is implicit because the server opens a port to accept connections and the connection factory then connects using this port, but the beans do not actually reference each other. In these cases to prevent problems with startup/shutdown ordering, you can make this dependency explicit with this setting.