com.github.liaomengge.base_common.mq.rabbitmq.AbstractMQReceiver Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of base-common-middleware Show documentation
Show all versions of base-common-middleware Show documentation
base common tool for developer
The newest version!
package com.github.liaomengge.base_common.mq.rabbitmq;
import com.github.liaomengge.base_common.utils.shutdown.LyShutdownUtil;
import lombok.Setter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer;
import org.springframework.beans.factory.DisposableBean;
import java.util.concurrent.Executor;
/**
* Created by liaomengge on 17/9/15.
*/
public abstract class AbstractMQReceiver implements DisposableBean {
protected static final Logger log = LoggerFactory.getLogger(AbstractMQReceiver.class);
public abstract void start();
public abstract void stop();
//注:该核心线程coreThread,必须大于等于concurrentConsumers;否则,会await,见:SimpleMessageListenerContainer.doStart
@Setter
protected Executor consumerExecutor;
/**
* 程序退出时的回调勾子
*
* @param listenerContainer
*/
protected void registerShutdownHook(AbstractMessageListenerContainer listenerContainer) {
LyShutdownUtil.registerShutdownHook(() -> {
try {
log.info("RabbitMQ Listener Exist...");
} finally {
if (listenerContainer != null) {
listenerContainer.shutdown();
}
}
});
}
}