SpringBoot整合RabbitMq环境搭建以及使用rabbitTemplate测试连通性

首先是环境搭建问题,按下面图片所示进行勾选模块:

SpringBoot整合RabbitMq环境搭建以及使用rabbitTemplate测试连通性_第1张图片

然后配置一下消息中间件的服务ip以及账号密码:

applicationContext.properties:

spring.rabbitmq.host=192.168.31.53
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

环境一切都准备好了!!
下面开始测试,本文用 rabbitTemplate来说明问题。

    @Autowired
    RabbitTemplate rabbitTemplate;

    @Test
    void sent() {//发送消息
        //message需要自己构建,定义消息体内容和消息头
//        rabbitTemplate.send(exchange,routekey,message);
        //object默认当成消息体,只需要传入要发送的对象,自动序列化发送给rabbitmq
//        rabbitTemplate.convertAndSend(exchange,routekey,object);
        Map<String,Object> map = new HashMap<>();
        map.put("msg","这是一个消息");
        map.put("data", Arrays.asList("hello",123,true));
        //对象被默认序列化之后发送出去
        rabbitTemplate.convertAndSend("exchange.direct","lzl.news",map);
    }

执行了上面的方法,发现队列lzl.news可以接收到消息,但是消息的内容是我们看不懂的二进制码:
SpringBoot整合RabbitMq环境搭建以及使用rabbitTemplate测试连通性_第2张图片
想要转化成我们能看懂的json字符串形式,只需要将下面的bean加入容器:

@Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }

再次执行sent方法,这次发现lzl.news队列中已经收到了我们期待的json数据:SpringBoot整合RabbitMq环境搭建以及使用rabbitTemplate测试连通性_第3张图片

至于接受方法,无论队列存储的二进制格式或者是json,他都会原样(发送什么就接收什么)的就收:

    @Test
    public void receive(){
        Object o = rabbitTemplate.receiveAndConvert("lzl.news");
        System.out.println(o.getClass());
        System.out.println(o);
    }

执行的结果如下:
SpringBoot整合RabbitMq环境搭建以及使用rabbitTemplate测试连通性_第4张图片

如何创建队列,转化器,以及绑定规则:

 	@Autowired
    AmqpAdmin amqpAdmin;

    @Test
    public void createExchange(){
        //创建交换器
        amqpAdmin.declareExchange(new DirectExchange("amqpadmin.exchange"));
        System.out.println("交换器创建完成!");
        
        //创建队列
        amqpAdmin.declareQueue(new Queue("amqpadmin.queue",true));//ture代表使用持久化
        System.out.println("队列创建完毕!");
        
        //实现绑定规则
        amqpAdmin.declareBinding(new Binding("amqpadmin.queue",Binding.DestinationType.QUEUE,"amqpadmin.exchange","amqp.haha",null));
        System.out.println("绑定规则指定完毕!");
    }

你可能感兴趣的:(springboot,rabbitmq,spring)