springboot集成rabbmitmq发送消息模式
时间: 2023-07-10 08:31:48 浏览: 44
在Spring Boot集成RabbitMQ中,消息发送有三种模式:点对点模式、发布/订阅模式、主题模式。下面分别介绍这三种模式的实现方式:
1. 点对点模式
点对点模式是指消息生产者发送消息到一个队列,消息消费者从队列中接收消息。这种模式下,每个消息只能被一个消费者接收。示例代码如下:
消息发送者:
```
@RestController
public class MessageController {
@Autowired
private AmqpTemplate rabbitTemplate;
@GetMapping("/send")
public String sendMessage() {
String message = "Hello, RabbitMQ!";
rabbitTemplate.convertAndSend("queue-name", message);
return "Message sent: " + message;
}
}
```
消息接收者:
```
@Component
public class MessageReceiver {
@RabbitListener(queues = "queue-name")
public void receiveMessage(String message) {
System.out.println("Received message: " + message);
}
}
```
2. 发布/订阅模式
发布/订阅模式是指消息生产者将消息发送到一个交换机(exchange)上,由交换机将消息发送给多个队列,多个消息消费者可以从不同的队列接收消息。示例代码如下:
消息发送者:
```
@RestController
public class MessageController {
@Autowired
private AmqpTemplate rabbitTemplate;
@GetMapping("/send")
public String sendMessage() {
String message = "Hello, RabbitMQ!";
rabbitTemplate.convertAndSend("fanout-exchange", "", message);
return "Message sent: " + message;
}
}
```
消息接收者1:
```
@Component
@RabbitListener(queues = "queue-1")
public class MessageReceiver1 {
public void receiveMessage(String message) {
System.out.println("Receiver 1 received message: " + message);
}
}
```
消息接收者2:
```
@Component
@RabbitListener(queues = "queue-2")
public class MessageReceiver2 {
public void receiveMessage(String message) {
System.out.println("Receiver 2 received message: " + message);
}
}
```
3. 主题模式
主题模式是指消息生产者将消息发送到一个交换机上,并指定一个路由键(routing key),交换机根据路由键将消息发送给匹配的队列,多个消息消费者可以从不同的队列接收消息。示例代码如下:
消息发送者:
```
@RestController
public class MessageController {
@Autowired
private AmqpTemplate rabbitTemplate;
@GetMapping("/send")
public String sendMessage() {
String message = "Hello, RabbitMQ!";
rabbitTemplate.convertAndSend("topic-exchange", "topic.key", message);
return "Message sent: " + message;
}
}
```
消息接收者1:
```
@Component
@RabbitListener(queues = "queue-1")
public class MessageReceiver1 {
@RabbitHandler
public void receiveMessage(String message) {
System.out.println("Receiver 1 received message: " + message);
}
}
```
消息接收者2:
```
@Component
@RabbitListener(queues = "queue-2")
public class MessageReceiver2 {
@RabbitHandler
public void receiveMessage(String message) {
System.out.println("Receiver 2 received message: " + message);
}
}
```
以上就是Spring Boot集成RabbitMQ的三种消息发送模式的实现方式。