zoukankan      html  css  js  c++  java
  • SpringBoot整合RabbitMQ

    1.导入相应依赖

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

    2.在测试类里进行测试

    package com.ws;
    
    import org.junit.jupiter.api.Test;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.Map;
    
    @SpringBootTest
    class Springboot02AmqpApplicationTests {
        @Autowired
        RabbitTemplate rabbitTemplate;
        @Test
        void contextLoads() {
            /*message需要自己构造一个;定义消息体内容和消息头
            *rabbitTemplate.send(exchange,routeKey,message)
            *
            * object默认当成消息体,只需要传入发送的对象,自动序列化发给rabbitmq
            * rabbitTemplate.convertAnd Send(exchange,routeKey,object)
            * */
            Map<String, Object> map = new HashMap<>();
            map.put("msg","one");
            map.put("data", Arrays.asList("HelloWorld",111));
            rabbitTemplate.convertAndSend("exchange.direct","ws.news",map);
        }
        @Test
        void test2(){
            Object o = rabbitTemplate.receiveAndConvert("ws.news");
            System.out.println(o.getClass());
            System.out.println(o);
    
        }
    }

    3.编写自己的序列化Bean

    import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.amqp.support.converter.MessageConverter;
    
    @Configuration
    public class MyAMQPConfig {
        @Bean
        public MessageConverter messageConverter(){
          return new Jackson2JsonMessageConverter();
        }
    }

     4.使用监听时需要在主启动类上加上@EnableRabbit注解

       在方法上加@RabbitListener(queues="")注解,当消息队列里有值的时候就会被取出

     @RabbitListener(queues = "ws.news")
        public void get(User user){
            System.out.println("get"+user);
        }
        @RabbitListener(queues = "ws.news")
        public void get2(Message message){
            System.out.println(message.getBody());
            System.out.println(message.getMessageProperties());
        }
  • 相关阅读:
    HIVE(2) 之 常用函数
    HIVE的Shell操作
    HIVE常用函数(1)聚合函数和序列函数
    版本控制系统之SVN和GIT的区别
    【PyQt5】信号与槽+装饰器定义槽函数
    【PyQt5】信号与槽+多线程
    【PyQt5】信号与槽用法进阶
    【PyQt5】信号与槽用法入门
    【python之路】【5、函数学习】带装饰器的函数作业【老男孩第2期全栈】
    【python之路】【4、文件操作】数据类型、文件操作-作业 用文件储存三级菜单并执行
  • 原文地址:https://www.cnblogs.com/ws-sharecode/p/13426551.html
Copyright © 2011-2022 走看看