diff options
Diffstat (limited to 'qpid/java')
2 files changed, 15 insertions, 1 deletions
diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java index 508aaf7518..b0b31d6e7b 100644 --- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java +++ b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java @@ -300,6 +300,12 @@ public class MessageConsumerImpl implements MessageConsumer, QueueReceiver, Topi } } + Message receiveRecoveredMessage() + { + return _replaymessages.isEmpty() ? null : _replaymessages.remove(0); + + } + Message receive0(final long timeout) { diff --git a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java index 0962e4aa37..945ae1c655 100644 --- a/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java +++ b/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java @@ -922,7 +922,15 @@ public class SessionImpl implements Session, QueueSession, TopicSession else { consumer = _messageConsumerList.remove(0); - msg = consumer.receive0(0L); + msg = consumer.receiveRecoveredMessage(); + if(msg == null) + { + msg = consumer.receive0(0L); + } + else + { + recoveredMessage = true; + } } MessageListener listener = consumer._messageListener; |
