final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try {
final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try {
public void recoverSubscription(String clientId, String subscriptionName, final MessageRecoveryListener listener) throws Exception { final String subscriptionKey = subscriptionKey(clientId, subscriptionName); final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try { pageFile.tx().execute(new Transaction.Closure<Exception>() { public void execute(Transaction tx) throws Exception { StoredDestination sd = getStoredDestination(dest, tx); LastAck cursorPos = sd.subscriptionAcks.get(tx, subscriptionKey); sd.orderIndex.setBatch(tx, cursorPos); for (Iterator<Entry<Long, MessageKeys>> iterator = sd.orderIndex.iterator(tx); iterator .hasNext();) { Entry<Long, MessageKeys> entry = iterator.next(); listener.recoverMessage(loadMessage(entry.getValue().location)); } sd.orderIndex.resetCursorPosition(); } }); }finally { indexLock.writeLock().unlock(); } }
final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try {
final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try {
final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try {
public void recoverNextMessages(String clientId, String subscriptionName, final int maxReturned, final MessageRecoveryListener listener) throws Exception { final String subscriptionKey = subscriptionKey(clientId, subscriptionName); final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try {
@Override public void recoverSubscription(String clientId, String subscriptionName, final MessageRecoveryListener listener) throws Exception { final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try { pageFile.tx().execute(new Transaction.Closure<Exception>() { @Override public void execute(Transaction tx) throws Exception { StoredDestination sd = getStoredDestination(dest, tx); LastAck cursorPos = getLastAck(tx, sd, subscriptionKey); sd.orderIndex.setBatch(tx, cursorPos); recoverRolledBackAcks(sd, tx, Integer.MAX_VALUE, listener); for (Iterator<Entry<Long, MessageKeys>> iterator = sd.orderIndex.iterator(tx); iterator .hasNext();) { Entry<Long, MessageKeys> entry = iterator.next(); if (ackedAndPrepared.contains(entry.getValue().messageId)) { continue; } listener.recoverMessage(loadMessage(entry.getValue().location)); } sd.orderIndex.resetCursorPosition(); } }); } finally { indexLock.writeLock().unlock(); } }
@Override public void recoverSubscription(String clientId, String subscriptionName, final MessageRecoveryListener listener) throws Exception { final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try { pageFile.tx().execute(new Transaction.Closure<Exception>() { @Override public void execute(Transaction tx) throws Exception { StoredDestination sd = getStoredDestination(dest, tx); LastAck cursorPos = getLastAck(tx, sd, subscriptionKey); sd.orderIndex.setBatch(tx, cursorPos); recoverRolledBackAcks(sd, tx, Integer.MAX_VALUE, listener); for (Iterator<Entry<Long, MessageKeys>> iterator = sd.orderIndex.iterator(tx); iterator .hasNext();) { Entry<Long, MessageKeys> entry = iterator.next(); if (ackedAndPrepared.contains(entry.getValue().messageId)) { continue; } listener.recoverMessage(loadMessage(entry.getValue().location)); } sd.orderIndex.resetCursorPosition(); } }); } finally { indexLock.writeLock().unlock(); } }
@Override public void recoverSubscription(String clientId, String subscriptionName, final MessageRecoveryListener listener) throws Exception { final String subscriptionKey = subscriptionKey(clientId, subscriptionName); @SuppressWarnings("unused") final SubscriptionInfo info = lookupSubscription(clientId, subscriptionName); indexLock.writeLock().lock(); try { pageFile.tx().execute(new Transaction.Closure<Exception>() { @Override public void execute(Transaction tx) throws Exception { StoredDestination sd = getStoredDestination(dest, tx); LastAck cursorPos = getLastAck(tx, sd, subscriptionKey); sd.orderIndex.setBatch(tx, cursorPos); recoverRolledBackAcks(sd, tx, Integer.MAX_VALUE, listener); for (Iterator<Entry<Long, MessageKeys>> iterator = sd.orderIndex.iterator(tx); iterator .hasNext();) { Entry<Long, MessageKeys> entry = iterator.next(); if (ackedAndPrepared.contains(entry.getValue().messageId)) { continue; } listener.recoverMessage(loadMessage(entry.getValue().location)); } sd.orderIndex.resetCursorPosition(); } }); } finally { indexLock.writeLock().unlock(); } }