defaultredeliveryhandler.java

来自「提供ESB 应用mule源代码 提供ESB 应用mule源代码」· Java 代码 · 共 104 行

JAVA
104
字号
/* * $Id: DefaultRedeliveryHandler.java 10489 2008-01-23 17:53:38Z dfeist $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.transport.jms;import org.mule.api.MessagingException;import org.mule.transport.jms.i18n.JmsMessages;import java.util.Collections;import java.util.Map;import javax.jms.JMSException;import javax.jms.Message;import org.apache.commons.collections.map.LRUMap;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * <code>DefaultRedeliveryHandler</code> TODO */public class DefaultRedeliveryHandler implements RedeliveryHandler{    /**     * logger used by this class     */    protected static final Log logger = LogFactory.getLog(DefaultRedeliveryHandler.class);    private Map messages = null;    protected JmsConnector connector;    public DefaultRedeliveryHandler()    {        messages = Collections.synchronizedMap(new LRUMap(256));    }    /**     * The connector associated with this handler is set before     * <code>handleRedelivery()</code> is called     *      * @param connector the connector associated with this handler     */    public void setConnector(JmsConnector connector)    {        this.connector = connector;    }    /**     * process the redelivered message. If the Jms receiver should process the     * message, it should be returned. Otherwise the connector should throw a     * <code>MessageRedeliveredException</code> to indicate that the message should     * be handled by the connector Exception Handler.     *      * @param message     */    public void handleRedelivery(Message message) throws JMSException, MessagingException    {        if (connector.getMaxRedelivery() <= 0)        {            return;        }        String id = message.getJMSMessageID();        Integer i = (Integer)messages.remove(id);        if (i == null)        {            if (logger.isDebugEnabled())            {                logger.debug("Message with id: " + id + " has been redelivered for the first time");            }            messages.put(id, new Integer(1));            return;        }        else if (i.intValue() == connector.getMaxRedelivery())        {            if (logger.isDebugEnabled())            {                logger.debug("Message with id: " + id + " has been redelivered " + (i.intValue() + 1)                             + " times, which exceeds the maxRedelivery setting on the connector");            }            JmsMessageAdapter adapter = (JmsMessageAdapter)connector.getMessageAdapter(message);            throw new MessageRedeliveredException(                JmsMessages.tooManyRedeliveries(id, String.valueOf(i.intValue() + 1)), adapter);        }        else        {            messages.put(id, new Integer(i.intValue() + 1));            if (logger.isDebugEnabled())            {                logger.debug("Message with id: " + id + " has been redelivered " + i.intValue() + " times");            }        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?