final void acknowledge( ConnectionContext context, final TopicMessageStore destination, final String clientId, final String subscriptionName, final MessageId messageId, final MessageAck ack) throws IOException { if (ack.isInTransaction()) { if (ack.getTransactionId().isXATransaction() || theStore.isConcurrentStoreAndDispatchTransactions() == false) { destination.acknowledge(context, clientId, subscriptionName, messageId, ack); } else { Tx tx = getTx(ack.getTransactionId()); tx.add( new RemoveMessageCommand(context) { public MessageAck getMessageAck() { return ack; } public Future<Object> run(ConnectionContext ctx) throws IOException { destination.acknowledge(ctx, clientId, subscriptionName, messageId, ack); return AbstractMessageStore.FUTURE; } }); } } else { destination.acknowledge(context, clientId, subscriptionName, messageId, ack); } }
@Override protected synchronized int getStoreSize() { try { return store.getMessageCount(clientId, subscriberName); } catch (Exception e) { LOG.error("{} Failed to get the outstanding message count from the store", this, e); throw new RuntimeException(e); } }