/* * (C) 2007-2012 Alibaba Group Holding Limited. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * Authors: * wuhua <wq163@163.com> , boyan <killme2008@gmail.com> */ package com.taobao.metamorphosis.client.extension; import com.taobao.metamorphosis.client.MetaClientConfig; import com.taobao.metamorphosis.client.consumer.ConsumerConfig; import com.taobao.metamorphosis.client.consumer.MessageConsumer; import com.taobao.metamorphosis.client.consumer.RecoverManager; import com.taobao.metamorphosis.client.consumer.storage.OffsetStorage; import com.taobao.metamorphosis.client.extension.consumer.ConsumerRecoverType; import com.taobao.metamorphosis.exception.MetaClientException; /** * һ����չ��Meta�Ự����,�ṩһЩ��չ����. * * @author �޻� * @since 2011-11-7 ����4:09:56 */ public class ExtMetaMessageSessionFactory extends MetaBroadcastMessageSessionFactory implements ExtMessageSessionFactory { public ExtMetaMessageSessionFactory(MetaClientConfig metaClientConfig) throws MetaClientException { super(metaClientConfig); } /* * (non-Javadoc) * * @see com.taobao.metamorphosis.client.extension.ExtMessageSessionFactory# * createConsumer(com.taobao.metamorphosis.client.consumer.ConsumerConfig, * com.taobao.metamorphosis.client.extension.ConsumerRecoverType) */ @Override public MessageConsumer createConsumer(ConsumerConfig consumerConfig, ConsumerRecoverType recoverType) { return this.createConsumer(consumerConfig, null, recoverType); } /* * (non-Javadoc) * * @see com.taobao.metamorphosis.client.extension.ExtMessageSessionFactory# * createConsumer(com.taobao.metamorphosis.client.consumer.ConsumerConfig, * com.taobao.metamorphosis.client.consumer.storage.OffsetStorage, * com.taobao.metamorphosis.client.extension.ConsumerRecoverType) */ @Override public MessageConsumer createConsumer(ConsumerConfig consumerConfig, OffsetStorage offsetStorage, ConsumerRecoverType recoverType) { return this.createConsumer(consumerConfig, offsetStorage, this.getRecoverManager(recoverType)); } /* * (non-Javadoc) * * @see com.taobao.metamorphosis.client.extension.ExtMessageSessionFactory# * createBroadcastConsumer * (com.taobao.metamorphosis.client.consumer.ConsumerConfig, * com.taobao.metamorphosis.client.extension.ConsumerRecoverType) */ @Override public MessageConsumer createBroadcastConsumer(ConsumerConfig consumerConfig, ConsumerRecoverType recoverType) { RecoverManager recoverManager = this.getRecoverManager(recoverType); this.addChild(recoverManager); return this.createBroadcastConsumer(consumerConfig, recoverManager); } private RecoverManager getRecoverManager(ConsumerRecoverType recoverType) { return recoverType != null ? recoverType.getRecoverManager(this) : null; } }