Description
As different QoS messages are acked at different points, we can get in the situation where broker gets message acks out of order, leading to exceptions like
javax.jms.JMSException: Unmatched acknowledge: MessageAck {commandId = 0, responseRequired = false, ackType = 2, consumerId = ID:mac.fritz.box-62188-1412945008667-1:3:-1:1, firstMessageId = null, lastMessageId = ID:mac.fritz.box-62188-1412945008667-1:2:-1:1:2, destination = topic://xxx, transactionId = null, messageCount = 1, poisonCause = null}; Expected message count (1) differs from count in dispatched-list (2)
The same situation can occur in heavy load environments. The root of the problem is that we send back standard acks which should be in order. As we really ack message by message we should be using individual acks in mqtt filter.