SpringBoot項目中集成RabbitMQ

  前面有幾篇文章對RabbitMQ基本原理做了介紹,此篇文章記錄一下RabbitMQ在Springboot項目中簡單的集成使用。

1.創建springboot項目,引入rabbitmq和web依賴
在這裏插入圖片描述

  1. 引入rabbitmq依賴之後,springboot會自動配置rabbitmq,可以從RabbitAutoConfiguration類中查看自動配置情況:

    2.1 其中有rabbitmq的連接工廠類

在這裏插入圖片描述

2.2 另外還有一個比較重要的RabbitTemplatebean對象,此對象是用來操作rabbitmq進行發送接收消息的模板,作用類似於redis中的redisTemplate
在這裏插入圖片描述
2.3 從RabbitAutoConfiguration自動配置類中可以看到還有RabbitProperties也就是rabbitmq的配置類,其中有對於rabbitmq的默認配置信息。

3.在配置文件application.properties中配置rabbitmq

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

4.使用RabbitTemplate操作rabbitmq發送接收消息

package org.magic.rabbitmq;

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;

@SpringBootTest
class RabbitmqApplicationTests {

  private static final String EXCHANGE_DIRECT = "exchange.direct";

  @Autowired
  private RabbitTemplate rabbitTemplate;

  /**
   * 發送String 類型的消息
   */
  @Test
  void sendMsg() {
    String msg = "這是項目中發送的一條測試消息~";
    rabbitTemplate.convertAndSend(EXCHANGE_DIRECT, "javamagic.news", msg);
  }

  /**
   * 接收String類型的消息
   */
  @Test
  void getMsg() {
    Object o = rabbitTemplate.receiveAndConvert("javamagic.news");
    System.out.println(o.getClass());
    System.out.println(o);
  }
}

5.如果想要發送的消息是一個對象類型的:

  /**
   * 發送 對象 類型的消息
   */
  @Test
  void sendObjMsg() {
    rabbitTemplate.convertAndSend(EXCHANGE_DIRECT,"javamagic.news",new Book("三國演義","羅貫中"));
  }

如果發送到rabbitmq中,通過web控制面板可以看到rabbitmq將Book對象進行序列化了:

在這裏插入圖片描述

因爲rabbitmqTemplate默認的消息轉換器使用的就是jdk序列化規則:

	private MessageConverter messageConverter = new SimpleMessageConverter();

而消息轉換器的實現類型有很多種:

在這裏插入圖片描述
我們也可以選擇使用json形式的消息轉換器進行序列化,

@Configuration
public class ConverterConfig {

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

這裏我們自己可以指定消息轉換器使用json的方式進行序列化,rabbitmaTemplate源碼中由於我們現在自己指定了messageConverterJackson2JsonMessageConverter,所以現在的消息序列化方式就是json形式。

在這裏插入圖片描述
此時我們再次發送一個Book對象的消息,從web控制面板中可以看出,自定義json序列化方式配置成功:
在這裏插入圖片描述

當我們獲取消息的時候:

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章