if (processExpired && ref.isExpired()) { if (broker.isExpired(ref)) { messageExpired(createConnectionContext(), ref); } else { ref.decrementReferenceCount(); resultList.addMessageLast(ref); } else { ref.decrementReferenceCount(); LOG.warn("{}, duplicate message {} - {} from cursor, is cursor audit disabled or too constrained? Redirecting to dlq", this, ref.getMessageId(), ref.getMessage().getMessageId().getFutureOrSequenceLong()); if (store != null) { ConnectionContext connectionContext = createConnectionContext(); dropMessage(ref); if (gotToTheStore(ref.getMessage())) { LOG.debug("Duplicate message {} from cursor, removing from store", this, ref.getMessage()); store.removeMessage(connectionContext, new MessageAck(ref.getMessage(), MessageAck.POSION_ACK_TYPE, 1)); broker.getRoot().sendToDeadLetterQueue(connectionContext, ref.getMessage(), null, new Throwable("duplicate paged in from cursor for " + destination));
protected boolean assignMessageGroup(Subscription subscription, QueueMessageReference node) throws Exception { boolean result = true; String groupId = node.getGroupID(); int sequence = node.getGroupSequence(); if (groupId != null) {
if (qmr.getLockOwner() == sub) { qmr.unlock(); qmr.incrementRedeliveryCounter(); } else { if (markAsRedelivered) { qmr.incrementRedeliveryCounter(); if (qmr.isDropped()) { unackedListIterator.remove();
private void addAll(Collection<? extends MessageReference> refs, List<Message> l, int max, List<MessageReference> toExpire) throws Exception { for (Iterator<? extends MessageReference> i = refs.iterator(); i.hasNext() && l.size() < max;) { QueueMessageReference ref = (QueueMessageReference) i.next(); if (ref.isExpired() && (ref.getLockOwner() == null)) { toExpire.add(ref); } else if (!ref.isAcked() && l.contains(ref.getMessage()) == false) { l.add(ref.getMessage()); } } }
MessageReference mr = messages.next(); QueueMessageReference qmr = createMessageReference(mr.getMessage()); qmr.decrementReferenceCount(); messages.rollback(qmr.getMessageId()); if (msgId.equals(qmr.getMessageId())) { return qmr;
private void addAll(Collection<? extends MessageReference> refs, List<Message> l, int max, List<MessageReference> toExpire) throws Exception { for (Iterator<? extends MessageReference> i = refs.iterator(); i.hasNext() && l.size() < max;) { QueueMessageReference ref = (QueueMessageReference) i.next(); if (ref.isExpired() && (ref.getLockOwner() == null)) { toExpire.add(ref); } else if (l.contains(ref.getMessage()) == false) { l.add(ref.getMessage()); } } }
BrokerSupport.resend(context, m.getMessage(), dest); removeMessage(context, m); messagesLock.writeLock().lock(); try { messages.rollback(m.getMessageId()); if (isDLQ()) { ActiveMQDestination originalDestination = m.getMessage().getOriginalDestination(); if (originalDestination != null) { for (Destination destination : regionBroker.getDestinations(originalDestination)) { DeadLetterStrategy strategy = destination.getDeadLetterStrategy(); strategy.rollback(m.getMessage());
protected void removeMessage(ConnectionContext context, Subscription sub, final QueueMessageReference reference, MessageAck ack) throws IOException { LOG.trace("ack of {} with {}", reference.getMessageId(), ack); messages.rollback(reference.getMessageId()); } finally { messagesLock.writeLock().unlock(); reference.setAcked(true);
@Override protected boolean canDispatch(MessageReference node) { return !((QueueMessageReference) node).isAcked(); }
public CompositeData getMessage(String messageId) throws OpenDataException { CompositeData result = null; QueueMessageReference ref = ((Queue)destination).getMessage(messageId); if (ref != null) { Message rc = ref.getMessage(); if (rc == null) { return null; } result = OpenTypeSupport.convert(rc); } return result; }
if (ref.isExpired()) { if (broker.isExpired(ref)) { messageExpired(createConnectionContext(), ref); } else { ref.decrementReferenceCount(); resultList = new ArrayList<QueueMessageReference>(result.size()); for (QueueMessageReference ref : result) { if (!pagedInMessages.containsKey(ref.getMessageId())) { pagedInMessages.put(ref.getMessageId(), ref); resultList.add(ref); } else { ref.decrementReferenceCount();
if (qmr.getLockOwner() == sub) { qmr.unlock(); qmr.incrementRedeliveryCounter(); } else { if (markAsRedelivered) { qmr.incrementRedeliveryCounter();
protected void removeMessage(ConnectionContext c, Subscription subs, QueueMessageReference r) throws IOException { MessageAck ack = new MessageAck(); ack.setAckType(MessageAck.STANDARD_ACK_TYPE); ack.setDestination(destination); ack.setMessageID(r.getMessageId()); removeMessage(c, subs, r, ack); }
@Override protected boolean isDropped(MessageReference node) { boolean result = false; if(node instanceof IndirectMessageReference) { QueueMessageReference qmr = (QueueMessageReference) node; result = qmr.isDropped(); } return result; }
private void addAll(Collection<QueueMessageReference> refs, List<Message> l, int maxBrowsePageSize, List<MessageReference> toExpire) throws Exception { for (Iterator<QueueMessageReference> i = refs.iterator(); i.hasNext() && l.size() < getMaxBrowsePageSize();) { QueueMessageReference ref = i.next(); if (ref.isExpired()) { toExpire.add(ref); } else if (l.contains(ref.getMessage()) == false) { l.add(ref.getMessage()); } } }
private void dropMessage(QueueMessageReference reference) { reference.drop(); destinationStatistics.getMessages().decrement(); pagedInMessagesLock.writeLock().lock(); try{ pagedInMessages.remove(reference.getMessageId()); }finally { pagedInMessagesLock.writeLock().unlock(); } }
private void addAll(Collection<? extends MessageReference> refs, List<Message> l, int max, List<MessageReference> toExpire) throws Exception { for (Iterator<? extends MessageReference> i = refs.iterator(); i.hasNext() && l.size() < max;) { QueueMessageReference ref = (QueueMessageReference) i.next(); if (ref.isExpired() && (ref.getLockOwner() == null)) { toExpire.add(ref); } else if (l.contains(ref.getMessage()) == false) { l.add(ref.getMessage()); } } }
MessageReference mr = messages.next(); QueueMessageReference qmr = createMessageReference(mr.getMessage()); qmr.decrementReferenceCount(); messages.rollback(qmr.getMessageId()); if (msgId.equals(qmr.getMessageId())) { return qmr;