}
protected void sendToDLQOrDiscard(QueueEntry entry)
{
final Exchange alternateExchange = entry.getQueue().getAlternateExchange();
final LogActor logActor = CurrentActor.get();
final ServerMessage msg = entry.getMessage();
if (alternateExchange != null)
{
final InboundMessage m = new InboundMessageAdapter(entry);
final List<? extends BaseQueue> destinationQueues = alternateExchange.route(m);
if (destinationQueues == null || destinationQueues.isEmpty())
{
entry.discard();
logActor.message( ChannelMessages.DISCARDMSG_NOROUTE(msg.getMessageNumber(), alternateExchange.getName()));
}
else
{
entry.routeToAlternate();
//output operational logging for each delivery post commit
for (final BaseQueue destinationQueue : destinationQueues)
{
logActor.message( ChannelMessages.DEADLETTERMSG(msg.getMessageNumber(), destinationQueue.getNameShortString().asString()));
}
}
}
else
{
entry.discard();
logActor.message(ChannelMessages.DISCARDMSG_NOALTEXCH(msg.getMessageNumber(), entry.getQueue().getName(), msg.getRoutingKey()));
}
}