RabbitMQ06自定义RabbitTemplate

编程

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;

}

}

 

以上是 RabbitMQ06自定义RabbitTemplate 的全部内容, 来源链接: utcz.com/z/512046.html

回到顶部