public void AfterRollback(ActiveMQMessage message) { // lets redeliver the message again message.RedeliveryCounter += 1; if (message.RedeliveryCounter > MaximumRedeliveryCount) { // lets send back a poisoned pill MessageAck ack = new MessageAck(); ack.AckType = (int) AckType.PoisonAck; ack.ConsumerId = info.ConsumerId; ack.Destination = message.Destination; ack.FirstMessageId = message.MessageId; ack.LastMessageId = message.MessageId; ack.MessageCount = 1; session.Connection.OneWay(ack); } else { dispatcher.Redeliver(message); } }
protected virtual MessageAck CreateMessageAck(Message message) { MessageAck ack = new MessageAck(); ack.AckType = (int) AckType.ConsumedAck; ack.ConsumerId = info.ConsumerId; ack.Destination = message.Destination; ack.FirstMessageId = message.MessageId; ack.LastMessageId = message.MessageId; ack.MessageCount = 1; if (session.Transacted) { session.DoStartTransaction(); ack.TransactionId = session.TransactionContext.TransactionId; session.TransactionContext.AddSynchronization(new MessageConsumerSynchronization(this, message)); } return ack; }