abstractresponseaggregator.java

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

JAVA
108
字号
/* * $Id: AbstractResponseAggregator.java 11967 2008-06-05 20:32:19Z 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.routing.response;import org.mule.api.MuleEvent;import org.mule.api.MuleMessage;import org.mule.api.lifecycle.InitialisationException;import org.mule.api.routing.RoutingException;import org.mule.routing.EventCorrelator;import org.mule.routing.EventCorrelatorCallback;import org.mule.routing.inbound.AbstractEventAggregator;import org.mule.routing.inbound.EventGroup;/** * <code>AbstractResponseAggregator</code> provides a base class for implementing * response aggregator routers. This provides a thread-safe implemenetation and * allows developers to customise how and when events are grouped and collated. * Response Agrregators are used to collect responses that are usually sent to * replyTo endpoints set on outbound routers. When an event is sent out via an * outbound router, the response router will block the response flow on an * Service until the Response Router resolves a reply or times out. */public abstract class AbstractResponseAggregator extends AbstractResponseRouter{    private int timeout = -1; // undefined    private boolean failOnTimeout = true;    private EventCorrelator eventCorrelator;    //@Override    public void initialise() throws InitialisationException    {        if (timeout == -1) // undefined        {            setTimeout(muleContext.getConfiguration().getDefaultSynchronousEventTimeout());        }        eventCorrelator = new EventCorrelator(getCorrelatorCallback(), messageInfoMapping, muleContext);        eventCorrelator.setTimeout(getTimeout());        eventCorrelator.setFailOnTimeout(isFailOnTimeout());        super.initialise();    }    protected EventCorrelator getEventCorrelator()    {        return eventCorrelator;    }    public void process(MuleEvent event) throws RoutingException    {        eventCorrelator.addEvent(event);    }    /**     * This method is called by the responding callee thread and should return the     * aggregated response message     *     * @param message     * @return     * @throws RoutingException     */    public MuleMessage getResponse(MuleMessage message) throws RoutingException    {        return eventCorrelator.getResponse(message);    }    public boolean isFailOnTimeout()    {        return failOnTimeout;    }    public void setFailOnTimeout(boolean failOnTimeout)    {        this.failOnTimeout = failOnTimeout;    }    public int getTimeout()    {        return timeout;    }    public void setTimeout(int timeout)    {        this.timeout = timeout;    }    protected abstract EventCorrelatorCallback getCorrelatorCallback();    /**     * @see AbstractEventAggregator#aggregateEvents(EventGroup)     */    protected MuleMessage aggregateEvents(EventGroup events) throws RoutingException    {        return null;    }}

⌨️ 快捷键说明

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