一丶添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
配置文件:application.properties
server.port=8883
spring.application.name=hello-world
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
二丶创建消息队列
package com.example.ampq;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Author:aijiaxiang
* Date:2020/4/26
* Description:
*/
@Configuration
public class QueueConfig {
/**
* 创建队列
* @return
*/
@Bean
public Queue createQueue(){
return new Queue("hello-queue");
}
}
三丶创建生产者
package com.example.ampq;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* Author:aijiaxiang
* Date:2020/4/26
* Description:发送消息
*/
@Component
public class Sender {
@Autowired
private AmqpTemplate amqpTemplate;
/**
* 发送消息的方法
* @param msg
*/
public void send(String msg){
//向消息队列发送消息
//参数1:队列名称
//参数2:消息
this.amqpTemplate.convertAndSend("hello-queue",msg);
}
}
四丶创建消费者
package com.example.ampq;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* Author:aijiaxiang
* Date:2020/4/26
* Description:消息接收者
*/
@Component
public class Receiver {
/**
* 接收消息的方法,采用消息队列监听机制
*
* 使用 @RabbitListener 注解标记方法,当监听到队列 hello-queue 中有消息时则会进行接收并处理
*
* @param msg
*/
@RabbitListener(queues = "hello-queue")
public void process(String msg){
System.out.println("receiver:"+msg);
}
}
五丶测试一波
package com.example.amqp;
import com.example.ampq.Sender;
import com.example.helloworld.HelloworldApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* Author:aijiaxiang
* Date:2020/4/26
* Description:
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = HelloworldApplication.class)
public class QueueTest {
@Autowired
private Sender sender;
/**
* 测试消息队列
*/
@Test
public void test1() throws InterruptedException {
while (true){
Thread.sleep(1000);
sender.send("hello");
}
}
}