BatchedJmsTemplate customises Spring's JmsTemplate with additional methods that enable multiple items to be processed in a single transaction for the various supported operations. The
additional methods are identified by the suffix 'batch'.

As with BatchedMessageListenerContainer, Within each transaction, the first read is a blocking read, that blocks for JmsTemplate.setReceiveTimeout(long). Subsequent messages up to
the maximum batch size setBatchSize(int) are read as non-blocking reads, with the batch completing as soon as the queue cannot service further messages.

Users of this class must handle rollback appropriately. A rollback triggered by failure processing a single message will cause all the messages in the transaction to rollback. It is recommended to
design you message processing so that rollback only occurs for fatal, unexpected and unrecoverable errors such as a failure in the infrastructure. You should handle other errors by, for example,
delivering messages directly to an error queue rather than throwing an exception. To assist in constructing this pattern, the AbstractMessageDriven POJO is also provided which provides the
basic framework for implementing a MessageListener that is aligned with this contract.

NB. Due to the design and structure of Spring's DefaultMessageListenerContainer and its superclasses, implementing this class must by necessity duplicate certain parts of
DefaultMessageListenerContainer. Consequently, this class has been managed at a source code level as a derivative of DefaultMessageListenerContainer and copyright messages and
attributions reflect this.

Author(s):

Mark Pollack and Juergen Hoeller were the original authors of the JmsTemplate. Modifications to this class to enable batching were made by Chris Pheby.

Receive a batch of up to default batch size for default destination and message selector and convert each message in the batch. Other than batching this method is the same as
JmsTemplate.receiveSelectedAndConvert(String)

Receive a batch of up to batchSize for default destination and message selector and convert each message in the batch. Other than batching this method is the same as
JmsTemplate.receiveSelectedAndConvert(String)

Receive a batch of up to default batch size for given Destination and message selector and convert each message in the batch. Other than batching this method is the same as
JmsTemplate.receiveSelectedAndConvert(Destination, String)

Receive a batch of up to batchSize for given Destination and message selector and convert each message in the batch. Other than batching this method is the same as
JmsTemplate.receiveSelectedAndConvert(Destination, String)

Receive a batch of up to default batch size for given destination name and message selector and convert each message in the batch. Other than batching this method is the same as
JmsTemplate.receiveSelectedAndConvert(String, String)

Receive a batch of up to batchSize for given destination name and message selector and convert each message in the batch. Other than batching this method is the same as
JmsTemplate.receiveSelectedAndConvert(String, String)