import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 配置 RabbitTemplate */ @Configuration public class RabbitMQConfig { @Value("${spring.rabbitmq.addresses}") private String addresses; @Value("${spring.rabbitmq.username}") private String username; @Value("${spring.rabbitmq.password}") private String password; @Value("${spring.rabbitmq.virtual-host}") private String virtualHost; @Value("${spring.rabbitmq.port:5672}") private Integer port; /** * spring.rabbitmq.template.mandatory * 消息發送失敗,是否回調給發送者 */ @Value("${spring.rabbitmq.template.mandatory:false}") private Boolean mandatory; /** * 是否確認 */ @Value("${spring.rabbitmq.publisher-confirms:false}") private Boolean publisherConfirms; /** * 若是mandatorys設置成true,該值也設置 成true */ @Value("${spring.rabbitmq.publisher-returns:false}") private Boolean publisherReturns; /** * RabbitMQConfig中定義connectionFactory中設置屬性 * @return */ @Bean public ConnectionFactory connectionFactory() { CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(); cachingConnectionFactory.setAddresses(this.addresses); cachingConnectionFactory.setUsername(this.username); cachingConnectionFactory.setPassword(this.password); cachingConnectionFactory.setVirtualHost(this.virtualHost); cachingConnectionFactory.setPort(this.port); // 若是消息要設置成回調,則如下的配置必需要設置成true cachingConnectionFactory.setPublisherConfirms(this.publisherConfirms); cachingConnectionFactory.setPublisherReturns(this.publisherReturns); return cachingConnectionFactory; } /** * 同時爲了調用SpringBoot集成rabbitMQ提供的發送的方法,咱們須要注入rabbitTemplate */ @Bean(name = "rabbitTemplate") // @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public RabbitTemplate rabbitTemplate() { RabbitTemplate template = new RabbitTemplate(this.connectionFactory()); template.setMandatory(mandatory); template.setMessageConverter(new Jackson2JsonMessageConverter()); return template; } }