public void RollbackDuplicate(IDispatcher dispatcher, Message message) { lock (this.mutex) { if (checkForDuplicates && message != null) { ActiveMQDestination destination = message.Destination; if (destination != null) { if (destination.IsQueue) { ActiveMQMessageAudit audit = null; if (destinations.TryGetValue(destination, out audit)) { audit.Rollback(message.MessageId); } } else { ActiveMQMessageAudit audit = null; if (dispatchers.TryGetValue(dispatcher, out audit)) { audit.Rollback(message.MessageId); } } } } } }
public bool IsDuplicate(IDispatcher dispatcher, Message message) { bool result = false; lock (this.mutex) { if (checkForDuplicates && message != null) { ActiveMQDestination destination = message.Destination; if (destination != null) { if (destination.IsQueue) { ActiveMQMessageAudit audit = null; if (!destinations.TryGetValue(destination, out audit)) { audit = new ActiveMQMessageAudit(auditDepth, auditMaximumProducerNumber); destinations.Add(destination, audit); } result = audit.IsDuplicate(message.MessageId); } else { ActiveMQMessageAudit audit = null; if (!dispatchers.TryGetValue(dispatcher, out audit)) { audit = new ActiveMQMessageAudit(auditDepth, auditMaximumProducerNumber); dispatchers.Add(dispatcher, audit); } result = audit.IsDuplicate(message.MessageId); } } } } return(result); }