SpringBoot整合RabbitMQ
生產(chǎn)者
整合步驟概述
1.創(chuàng)建生產(chǎn)者SpringBoot工程
2.導(dǎo)入依賴坐標
3.編寫yml配置斋泄,基本信息配置
4.定義交換機,隊列以及綁定關(guān)系的配置類
5.注入RabbitTemplate蜈出,調(diào)用方法,完成消息發(fā)送
1.創(chuàng)建生產(chǎn)者SpringBoot工程
在這里插入圖片描述
2.導(dǎo)入依賴坐標
<!--繼承父類工程-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.5.RELEASE</version>
</parent>
<!--所需依賴-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
3.編寫yml配置先蒋,基本信息配置
spring:
rabbitmq:
host: 121.196.111.120 #ip
port: 5672 #端口
username: guest #用戶名
password: guest #密碼
virtual-host: /demo #虛擬機名稱
4.定義交換機职恳,隊列以及綁定關(guān)系的配置類
package com.pjh.Config;
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitConfig {
/*定義交換機名稱*/
public static final String EXCHANGE_NAME="boot_topic_exchange";
/*定義隊列名稱*/
public static final String QUEUE_NAME = "boot_queue";
/*交換機*/
@Bean("bootExchange")
public Exchange bootExchange(){
return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
}
/* 2.Queue 隊列*/
@Bean("bootQueue")
public Queue bootQueue(){
return QueueBuilder.durable(QUEUE_NAME).build();
}
/*隊列和交換機綁定關(guān)系*/
/*
* 知道哪個隊列
* 知道哪個交換機
* routing key
* */
@Bean
public Binding getBinding(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
}
}
5.注入RabbitTemplate,調(diào)用方法蛹屿,完成消息發(fā)送
package com.pjh.test;
import com.pjh.Config.RabbitConfig;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.print.DocFlavor;
@SpringBootTest
@RunWith(SpringRunner.class)
public class Test {
/*注入RabbitTemplate*/
@Autowired
private RabbitTemplate rabbitTemplate;
@org.junit.Test
public void testSend(){
rabbitTemplate.convertAndSend(RabbitConfig.EXCHANGE_NAME,"boot.haha","boot mq hello~~~");
}
}
消費者
整合步驟概述
1.創(chuàng)建生產(chǎn)者SpringBoot工程
2.導(dǎo)入依賴坐標
3.編寫yml配置屁奏,基本信息配置
4.編寫啟動類
5.編寫消息監(jiān)聽處理類
6.測試
1.創(chuàng)建生產(chǎn)者SpringBoot工程
在這里插入圖片描述
2.導(dǎo)入依賴坐標
<!--繼承父類工程-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.5.RELEASE</version>
</parent>
<!--所需依賴-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
3.編寫yml配置,基本信息配置
spring:
rabbitmq:
virtual-host: 121.196.111.120
4.編寫啟動類
package com.pjh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class);
}
}
5.編寫消息監(jiān)聽處理類
package com.pjh.Listener;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MyListen {
/**
* 監(jiān)聽某個隊列的消息
* @param message 接收到的消息
*/
@RabbitListener(queues = "boot_queue")
public void myListener1(String message){
System.out.println("消費者接收到的消息為:" + message);
}
}