package org.jeecg.boot.starter.rabbitmq.config;
|
|
|
import java.util.UUID;
|
|
import org.jeecg.boot.starter.rabbitmq.event.JeecgRemoteApplicationEvent;
|
import org.jeecg.common.config.mqtoken.TransmitUserTokenFilter;
|
import org.springframework.amqp.core.AcknowledgeMode;
|
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
|
import org.springframework.amqp.rabbit.core.RabbitAdmin;
|
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
|
import org.springframework.amqp.support.ConsumerTagStrategy;
|
import org.springframework.cloud.bus.jackson.RemoteApplicationEventScan;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
|
/**
|
* 消息队列配置类
|
*
|
* @author zyf
|
*/
|
@Configuration
|
@RemoteApplicationEventScan(basePackageClasses = JeecgRemoteApplicationEvent.class)
|
public class RabbitMqConfig {
|
|
|
@Bean
|
public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
|
RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
|
//设置忽略声明异常
|
rabbitAdmin.setIgnoreDeclarationExceptions(true);
|
return rabbitAdmin;
|
}
|
|
/**
|
* 注入获取token过滤器
|
* @return
|
*/
|
@Bean
|
public TransmitUserTokenFilter transmitUserInfoFromHttpHeader(){
|
return new TransmitUserTokenFilter();
|
}
|
|
@Bean
|
public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) {
|
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
|
container.setConnectionFactory(connectionFactory);
|
//手动确认
|
container.setAcknowledgeMode(AcknowledgeMode.MANUAL);
|
//当前的消费者数量
|
container.setConcurrentConsumers(1);
|
//最大的消费者数量
|
container.setMaxConcurrentConsumers(1);
|
//是否重回队列
|
container.setDefaultRequeueRejected(true);
|
|
//消费端的标签策略
|
container.setConsumerTagStrategy(new ConsumerTagStrategy() {
|
@Override
|
public String createConsumerTag(String queue) {
|
return queue + "_" + UUID.randomUUID().toString();
|
}
|
});
|
return container;
|
}
|
|
}
|