SpringBoot集成RabbitMQ
RabbitMQ的介绍参考上一篇文章,不在介绍,直接搞!
-
创建Spring Boot应用rabbitmq-demo
-
pom.xml添加依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies>
3.在application.properties文件中添加如下内容
spring.application.name=rabbitmq-demo
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
srping.rabbitmq.password=guest
- 创建消息生产者
import org.springframework.amqp.core.AmqpTemplate
@Component
public class Sender {
// 定义了一套针对AMQP协议的基础操作
@Autowired
private AmqpTemplate rabbitTemplate;
public void send(){
String context = "hello " + new Date();
System.out.println("Sender: " + context);
// 产生一个字符串,并发送到名为hello的队列中
this.rabbitTemplate.convertAndSend("hello", context);
}
}
- 创建消息消费者,实现对消息队列的消费
@Component
// 定义对hello队列的监听
@RabbitListener(queues="hello")
public class Receiver {
// 指定对消息的处理方法
@RabbitHandler
public void precess(String hello){
System.out.println("Receiver: " + hello);
}
}
6.创建配置类,用来配置队列、交换器、路由等高级信息。此处仅简单实现队列配置,完成一个基本的生产消费过程
@Configuration
public class RabbitConfig {
@Bean
public Queue helloQueue(){
return new Queue("hello");
}
}
- 主类
@SpringBootApplication
public class RabbitMQApplication {
public static void main(String[] args) {
SpringApplication.run(RabbitMQApplication.class, args);
}
}
- 单元测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = RabbitMQApplication.class)
public class RabbitMQApplicationTest {
@Autowired
private Sender sender;
@Test
public void hello(){
sender.send();
}
}
- 启动应用主类,查看控制台
- 运行单元测试类,可以在其控制台看到Sender的信息,在主类的控制台,可以看到Receiver的信息。
以上便是生产者(消息发送)与消费者(消息接收)的示例,在整个生产消费过程中,生产与消费是一个异步操作,这也是在分布式系统中要使用消息代理的重要原因。