Return-Path: Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: (qmail 2284 invoked from network); 24 Aug 2007 06:29:40 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 24 Aug 2007 06:29:40 -0000 Received: (qmail 64596 invoked by uid 500); 24 Aug 2007 06:29:37 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 64548 invoked by uid 500); 24 Aug 2007 06:29:37 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 64539 invoked by uid 99); 24 Aug 2007 06:29:36 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Aug 2007 23:29:36 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 24 Aug 2007 06:29:39 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 064591A9832; Thu, 23 Aug 2007 23:29:19 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r569270 - /activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java Date: Fri, 24 Aug 2007 06:29:18 -0000 To: commits@activemq.apache.org From: rajdavies@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20070824062919.064591A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rajdavies Date: Thu Aug 23 23:29:18 2007 New Revision: 569270 URL: http://svn.apache.org/viewvc?rev=569270&view=rev Log: ensure exception is logged if one is raised sending a message to a dead letter queue Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java?rev=569270&r1=569269&r2=569270&view=diff ============================================================================== --- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java (original) +++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java Thu Aug 23 23:29:18 2007 @@ -636,38 +636,48 @@ getRoot().sendToDeadLetterQueue(context, node); } - public void sendToDeadLetterQueue(ConnectionContext context, MessageReference node) { - try { - if (node != null) { - Message message = node.getMessage(); - if (message != null) { - DeadLetterStrategy deadLetterStrategy = node.getRegionDestination().getDeadLetterStrategy(); - if (deadLetterStrategy != null) { - if (deadLetterStrategy.isSendToDeadLetterQueue(message)) { - long expiration = message.getExpiration(); - message.setExpiration(0); - message.setProperty("originalExpiration", new Long(expiration)); - if (!message.isPersistent()) { - message.setPersistent(true); - message.setProperty("originalDeliveryMode", "NON_PERSISTENT"); - } - // The original destination and transaction id do - // not get filled when the message is first - // sent, - // it is only populated if the message is routed to - // another destination like the DLQ - ActiveMQDestination deadLetterDestination = deadLetterStrategy.getDeadLetterQueueFor(message.getDestination()); - BrokerSupport.resend(context, message, deadLetterDestination); - } - } - } else { - LOG.warn("Null message for node: " + node); - } - } - } catch (Exception e) { - LOG.warn("Failed to pass expired message to dead letter queue"); - } - } + public void sendToDeadLetterQueue(ConnectionContext context, + MessageReference node){ + try{ + boolean sent=false; + if(node!=null){ + Message message=node.getMessage(); + if(message!=null&&node.getRegionDestination()!=null){ + DeadLetterStrategy deadLetterStrategy=node + .getRegionDestination().getDeadLetterStrategy(); + if(deadLetterStrategy!=null){ + if(deadLetterStrategy.isSendToDeadLetterQueue(message)){ + long expiration=message.getExpiration(); + message.setExpiration(0); + message.setProperty("originalExpiration",new Long( + expiration)); + if(!message.isPersistent()){ + message.setPersistent(true); + message.setProperty("originalDeliveryMode", + "NON_PERSISTENT"); + } + // The original destination and transaction id do + // not get filled when the message is first + // sent, + // it is only populated if the message is routed to + // another destination like the DLQ + ActiveMQDestination deadLetterDestination=deadLetterStrategy + .getDeadLetterQueueFor(message + .getDestination()); + BrokerSupport.resend(context,message, + deadLetterDestination); + sent=true; + } + } + } + } + if(sent==false){ + LOG.warn("Failed to send "+node+" to dead letter queue"); + } + }catch(Exception e){ + LOG.warn("Failed to pass expired message to dead letter queue",e); + } + } public Broker getRoot() { try {