| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- package com.miyzh.config;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.amqp.core.*;
- import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
- import org.springframework.amqp.rabbit.connection.ConnectionFactory;
- import org.springframework.amqp.rabbit.core.RabbitTemplate;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.beans.factory.config.ConfigurableBeanFactory;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.Scope;
- /**
- * @Description: RabbitConfig
- * @Author: lyt
- * @Date: 2019/6/21 11:21
- */
- @Configuration
- public class RabbitConfig {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- @Value("${spring.rabbitmq.host}")
- private String host;
- @Value("${spring.rabbitmq.port}")
- private int port;
- @Value("${spring.rabbitmq.username}")
- private String username;
- @Value("${spring.rabbitmq.password}")
- private String password;
- public static final String EXCHANGE_SETTLE = "settexchange";
- public static final String QUEUE_SETTLE = "confirmSettle";
- public static final String QUEUE_PRESETTLE = "preSettle";
- public static final String ROUTINGKEY_CONFIRM = "confirmSettle";
- public static final String ROUTINGKEY_PRE = "preSettle";
- @Bean
- public ConnectionFactory connectionFactory() {
- CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host,port);
- connectionFactory.setUsername(username);
- connectionFactory.setPassword(password);
- connectionFactory.setVirtualHost("/");
- connectionFactory.setPublisherConfirms(true);
- return connectionFactory;
- }
- @Bean
- @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
- //必须是prototype类型
- public RabbitTemplate rabbitTemplate() {
- RabbitTemplate template = new RabbitTemplate(connectionFactory());
- return template;
- }
- /**
- * 针对消费者配置
- * 1. 设置交换机类型
- * 2. 将队列绑定到交换机
- FanoutExchange: 将消息分发到所有的绑定队列,无routingkey的概念
- HeadersExchange :通过添加属性key-value匹配
- DirectExchange:按照routingkey分发到指定队列
- TopicExchange:多关键字匹配
- */
- @Bean
- public DirectExchange directExchange() {
- return new DirectExchange(EXCHANGE_SETTLE);
- }
- /**
- * 获取队列Pre
- * @return
- */
- @Bean
- public Queue queuePre() {
- //队列持久
- return new Queue(QUEUE_PRESETTLE, true);
- }
- @Bean
- public Binding bindingPre() {
- return BindingBuilder.bind(queuePre()).to(directExchange()).with(RabbitConfig.ROUTINGKEY_PRE);
- }
- /**
- * 获取队列confirm
- * @return
- */
- @Bean
- public Queue queueConfirm() {
- //队列持久
- return new Queue(QUEUE_SETTLE, true);
- }
- @Bean
- public Binding binding() {
- return BindingBuilder.bind(queueConfirm()).to(directExchange()).with(RabbitConfig.ROUTINGKEY_CONFIRM);
- }
- }
|