封装rabbitmq6种模式
时间: 2023-08-11 10:49:08 浏览: 159
RabbitMQ提供了6种不同的消息模式,分别是:
1. 简单模式(Simplest Model):最基本的模式,只包含一个生产者、一个消费者和一个队列。
2. 工作队列模式(Work queues Model):在简单模式的基础上,增加了多个消费者对一个队列进行消费。
3. 发布/订阅模式(Publish/Subscribe Model):包含一个生产者、多个消费者和多个队列。生产者将消息发送到交换机,交换机将消息分发到所有与之绑定的队列,消费者从队列中获取并消费消息。
4. 路由模式(Routing Model):包含一个生产者、多个消费者和多个队列。生产者发送消息到交换机,交换机根据路由键将消息转发到相应的队列,消费者从队列中获取并消费消息。
5. 主题模式(Topic Model):包含一个生产者、多个消费者和多个队列。生产者发送消息到交换机,并指定消息的路由规则,交换机根据路由规则将消息转发到符合规则的队列,消费者从队列中获取并消费消息。
6. 随机模式(Headers Model):包含一个生产者、多个消费者和多个队列。生产者发送消息到交换机,并指定消息的属性,交换机根据属性匹配情况将消息转发到符合条件的队列,消费者从队列中获取并消费消息。
相关问题
spring boot封装rabbitmq6种模式
在Spring Boot中,可以使用spring-boot-starter-amqp库来轻松地集成RabbitMQ,并且封装了多种模式的实现方式。
1. 简单模式(Simplest Model):
```java
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendSimpleMessage(String message) {
rabbitTemplate.convertAndSend("simple-queue", message);
}
@RabbitListener(queues = "simple-queue")
public void receiveSimpleMessage(String message) {
System.out.println("Received message: " + message);
}
```
2. 工作队列模式(Work queues Model):
```java
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendWorkMessage(String message) {
rabbitTemplate.convertAndSend("work-queue", message);
}
@RabbitListener(queues = "work-queue")
public void receiveWorkMessage(String message) throws InterruptedException {
System.out.println("Received message: " + message);
Thread.sleep(1000); // 模拟消费者耗时操作
}
```
3. 发布/订阅模式(Publish/Subscribe Model):
```java
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendPublishMessage(String message) {
rabbitTemplate.convertAndSend("fanout-exchange", "", message);
}
@RabbitListener(queues = "fanout-queue-1")
public void receivePublishMessage1(String message) {
System.out.println("Received message from queue 1: " + message);
}
@RabbitListener(queues = "fanout-queue-2")
public void receivePublishMessage2(String message) {
System.out.println("Received message from queue 2: " + message);
}
```
4. 路由模式(Routing Model):
```java
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendRoutingMessage(String message, String routingKey) {
rabbitTemplate.convertAndSend("direct-exchange", routingKey, message);
}
@RabbitListener(queues = "direct-queue-1")
public void receiveRoutingMessage1(String message) {
System.out.println("Received message from queue 1: " + message);
}
@RabbitListener(queues = "direct-queue-2")
public void receiveRoutingMessage2(String message) {
System.out.println("Received message from queue 2: " + message);
}
```
5. 主题模式(Topic Model):
```java
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendTopicMessage(String message, String routingKey) {
rabbitTemplate.convertAndSend("topic-exchange", routingKey, message);
}
@RabbitListener(queues = "topic-queue-1")
public void receiveTopicMessage1(String message) {
System.out.println("Received message from queue 1: " + message);
}
@RabbitListener(queues = "topic-queue-2")
public void receiveTopicMessage2(String message) {
System.out.println("Received message from queue 2: " + message);
}
```
6. 随机模式(Headers Model):
```java
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendHeadersMessage(String message, Map<String, Object> headers) {
MessageProperties messageProperties = new MessageProperties();
messageProperties.getHeaders().putAll(headers);
Message messageObj = MessageBuilder.withBody(message.getBytes())
.andProperties(messageProperties)
.build();
rabbitTemplate.send("headers-exchange", "", messageObj);
}
@RabbitListener(queues = "headers-queue-1")
public void receiveHeadersMessage1(String message) {
System.out.println("Received message from queue 1: " + message);
}
@RabbitListener(queues = "headers-queue-2")
public void receiveHeadersMessage2(String message) {
System.out.println("Received message from queue 2: " + message);
}
```
以上是Spring Boot中封装RabbitMQ的6种模式的简单示例。实际使用时,可能需要更加复杂的逻辑,例如消息确认、消息重试、死信队列等功能。
阅读全文
相关推荐
















