RabbitMQ 实战

112 阅读1分钟

安装

docker run -d --hostname my-rabbit --name rabbitmq -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:management-alpine

实战

  1. 依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    
  2. 配置

    spring:
      rabbitmq:
        host: localhost
        port: 5672
        username: user
        password: password
    
    @Configuration
    public class RabbitConfig {
    ​
        /**
         * 配置消息转换器
         *
         * @return
         */
        @Bean
        public MessageConverter messageConverter() {
            return new Jackson2JsonMessageConverter();
        }
    ​
        /**
         * 声明一个队列
         *
         * @return
         */
        @Bean
        public Queue myQueue() {
            return new Queue("0721");
        }
    }
    ​
    
  3. demo

    @Service
    @Slf4j
    public class RabbitMQService {
    ​
        private static final String QUEUE_NAME = "0721";
    ​
        @Autowired
        private RabbitTemplate rabbitTemplate;
    ​
        /**
         * 发送消息
         *
         * @param order
         */
        public void sendOrder(Order order) {
    ​
            rabbitTemplate.convertAndSend(QUEUE_NAME, order);
            log.info("已发送订单:{}", order);
        }
    ​
        /**
         * 拉取模式
         *
         * @return
         */
        public Order receiveOrder() {
    ​
            Order order = (Order) rabbitTemplate.receiveAndConvert(QUEUE_NAME);
            log.info("收到订单:{}", order);
            return order;
        }
    ​
        /**
         * 推送模式
         *
         * @param order
         */
        @RabbitListener(queues = QUEUE_NAME)
        public void receiveOrder(Order order) {
    ​
            log.info("收到订单:{}", order);
        }
    ​
    }