package com.uas.ps.message.rabbit; import org.springframework.amqp.core.*; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.annotation.PostConstruct; import java.util.HashMap; import java.util.Map; /** * rabbit 配置 * @author liuam * @since 2018/9/13 0013 下午 14:22 */ @Configuration public class RabbitConfig { @Autowired private AmqpAdmin amqpAdmin; @Autowired private InquiryMessageListener inquiryMessageListener; @PostConstruct public void init() { Map args = new HashMap(); args.put("x-dead-letter-exchange", ""); args.put("x-dead-letter-routing-key", RabbitConstants.DEAD_LETTER_ROUTING_KEY); amqpAdmin.declareQueue(new Queue(RabbitConstants.INQUIRY_MESSAGE + RabbitConstants.DELAY_QUEUE_NAME_SUFFIX, true, false, false, args)); } @Bean public SimpleMessageListenerContainer messageListenerContainer(RabbitTemplate rabbitTemplate) { rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter()); SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(rabbitTemplate.getConnectionFactory()); container.setQueues(new Queue(RabbitConstants.INQUIRY_MESSAGE)); container.setExposeListenerChannel(true); container.setMaxConcurrentConsumers(RabbitConstants.MAXCONCURRENTCONSUMERS); container.setConcurrentConsumers(RabbitConstants.CONCURRENTCONSUMERS); //设置手动应答 container.setAcknowledgeMode(AcknowledgeMode.MANUAL); container.setMessageListener(inquiryMessageListener); container.setPrefetchCount(RabbitConstants.PREFETCH_COUNT); return container; } }