summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java b/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java
index eb414abea5..024558eaaf 100644
--- a/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java
+++ b/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer_0_10.java
@@ -127,8 +127,14 @@ public class BasicMessageConsumer_0_10 extends BasicMessageConsumer<Struct[], By
getSession().getAMQConnection().getExceptionListener()
.onException(new JMSAMQException("Error when receiving message", e));
}
- catch (JMSException e1)
+ catch (Exception e1)
{
+ // the receiver may be waiting for a message
+ if( _messageCounter.get() >= 0)
+ {
+ _messageCounter.decrementAndGet();
+ _synchronousQueue.add(new NullTocken());
+ }
// we should silently log thie exception as it only hanppens when the connection is closed
_logger.error("Exception when receiving message", e1);
}
@@ -261,7 +267,7 @@ public class BasicMessageConsumer_0_10 extends BasicMessageConsumer<Struct[], By
// TODO Use a tag for fiding out if message filtering is done here or by the broker.
try
{
- if (getMessageSelector() != null)
+ if (getMessageSelector() != null && ! getMessageSelector().equals(""))
{
messageOk = _filter.matches(message);
}