package com.easyooo.framework.cache.transaction; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer; import com.alibaba.rocketmq.common.consumer.ConsumeFromWhere; import com.alibaba.rocketmq.common.protocol.heartbeat.MessageModel; /** * RocketMQ 消息消费者配置工厂Bean * * @author Killer */ public class ConsumerFactoryBean extends DefaultMQPushConsumer implements InitializingBean, FactoryBean<DefaultMQPushConsumer> { private String applicationName; private String topicName = ClusterConstant.DEFAULT_TOPIC_NAME; @Override public void afterPropertiesSet() throws Exception { setConsumerGroup(applicationName); setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); setConsumeMessageBatchMaxSize(1); setMessageModel(MessageModel.BROADCASTING); subscribe(topicName, "*"); setMessageListener(new JvmCacheMessageListenerOrderly()); start(); } @Override public DefaultMQPushConsumer getObject() throws Exception { return this; } @Override public Class<?> getObjectType() { return DefaultMQPushConsumer.class; } @Override public boolean isSingleton() { return true; } public void setApplicationName(String applicationName) { this.applicationName = applicationName; } public void setTopicName(String topicName) { this.topicName = topicName; } }