@Override public Message<Object> receive() { for (Object key : this.correlationLocks.keySet()) { Object lock = getLock(key); synchronized (lock) { MessageGroup group = this.store.getMessageGroup(key); //group might be removed by another thread if (group != null) { if (this.releaseStrategy.canRelease(group)) { Message<?> nextMessage = null; Iterator<Message<?>> messages = group.getMessages().iterator(); if (messages.hasNext()) { nextMessage = messages.next(); this.store.removeMessagesFromGroup(key, nextMessage); if (log.isDebugEnabled()) { log.debug(String.format("Released message for key [%s]: %s.", key, nextMessage)); } } else { remove(key); } @SuppressWarnings("unchecked") Message<Object> result = (Message<Object>) nextMessage; return result; } } } } return null; }
@Override public Message<Object> receive() { for (Object key : this.correlationLocks.keySet()) { Object lock = getLock(key); synchronized (lock) { MessageGroup group = this.store.getMessageGroup(key); //group might be removed by another thread if (group != null) { if (this.releaseStrategy.canRelease(group)) { Message<?> nextMessage = null; Iterator<Message<?>> messages = group.getMessages().iterator(); if (messages.hasNext()) { nextMessage = messages.next(); this.store.removeMessagesFromGroup(key, nextMessage); if (log.isDebugEnabled()) { log.debug(String.format("Released message for key [%s]: %s.", key, nextMessage)); } } else { remove(key); } @SuppressWarnings("unchecked") Message<Object> result = (Message<Object>) nextMessage; return result; } } } } return null; }