springboot集成rabbitmq例子
时间: 2023-11-16 13:56:34 浏览: 127
这个例子是一个使用SpringBoot集成RabbitMQ的示例。它包括了一个消费者服务和一些配置类。其中,引用提供了一个详细的教程,引用和引用则提供了两种不同的配置方式。这个例子中使用了DirectExchange和Queue,并通过Binding将它们绑定在一起。同时,也提供了ConnectionFactory和RabbitAdmin的配置。这个例子可以帮助你快速了解如何在SpringBoot中使用RabbitMQ。
相关问题
springboot 集成RabbitMQ
好的,我可以为您提供一些关于Spring Boot集成RabbitMQ的信息。
首先,您需要在pom.xml文件中添加以下依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
```
然后在application.properties文件中添加以下配置:
```properties
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
```
接下来,您可以创建一个RabbitMQ配置类,如下所示:
```java
@Configuration
public class RabbitMQConfig {
@Value("${spring.rabbitmq.host}")
private String host;
@Value("${spring.rabbitmq.port}")
private int port;
@Value("${spring.rabbitmq.username}")
private String username;
@Value("${spring.rabbitmq.password}")
private String password;
@Bean
public ConnectionFactory connectionFactory() {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
return connectionFactory;
}
@Bean
public RabbitTemplate rabbitTemplate() {
return new RabbitTemplate(connectionFactory());
}
@Bean
public SimpleMessageListenerContainer messageListenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setQueueNames("myQueue");
container.setMessageListener(new MyMessageListener());
return container;
}
}
```
这个配置类中,我们首先使用@Value注解读取application.properties文件中的RabbitMQ配置信息,然后创建一个ConnectionFactory和RabbitTemplate来连接RabbitMQ。接着,我们创建一个SimpleMessageListenerContainer并将其设置为监听名为“myQueue”的队列,同时指定一个自定义的消息监听器MyMessageListener。
最后,您可以在自定义的消息监听器中实现RabbitMQ的业务逻辑,如下所示:
```java
public class MyMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
try {
String msg = new String(message.getBody(), "UTF-8");
System.out.println("Received message: " + msg);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
```
这个消息监听器简单地将收到的消息转换为字符串并打印出来。
现在,您可以在应用程序中使用RabbitTemplate来发送消息,如下所示:
```java
@Autowired
private RabbitTemplate rabbitTemplate;
public void sendMessage() {
rabbitTemplate.convertAndSend("myExchange", "myRoutingKey", "Hello, RabbitMQ!");
}
```
这个例子中,我们使用RabbitTemplate将消息发送到名为“myExchange”的交换机,并将其路由到名为“myRoutingKey”的队列。
以上就是Spring Boot集成RabbitMQ的基本步骤。希望这些信息能对您有所帮助!
springboot 集成rabbitmq 多个bind
Spring Boot集成RabbitMQ时,如果需要连接到多个队列并绑定到同一个交换器(exchange),可以采用以下步骤:
1. 添加依赖:在`pom.xml`文件中添加RabbitMQ的Spring AMQP依赖。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
```
2. 配置application.properties 或 application.yml 文件,设置连接信息和路由键(routing key)模式。例如:
```properties
spring.rabbitmq.hosts=your-rabbitmq-host1, your-rabbitmq-host2
spring.rabbitmq.port=5672
spring.rabbitmq.username=your-username
spring.rabbitmq.password=your-password
# 如果有多个队列和共享交换器,可以设置binding-key前缀
spring.rabbitmq.binding-key-prefix=my-app.*
```
这里,`hosts`配置了多个RabbitMQ服务器地址,`binding-key-prefix`设置了所有队列的共同前缀。
3. 创建生产者(Producer)和消费者.Consumer)实例,使用`@RabbitListener`注解监听特定交换器和队列。例如:
```java
// 生产者
@Component
public class MyProducer {
@RabbitTemplate
RabbitTemplate rabbitTemplate;
public void sendMessage(String message) {
rabbitTemplate.convertAndSend("myExchange", "myQueuePrefix.message", message);
}
}
// 消费者 (假设有两个队列 myQueue1 和 myQueue2)
@Component
public class MyConsumer {
@RabbitListener(queues = {"myQueue1", "myQueue2"})
public void consumeMessage(String message) {
System.out.println("Received message: " + message);
}
}
```
4. 当生产者发送消息时,它会根据`binding-key`选择正确的队列。在这个例子中,所有绑定到`"myExchange"`且`queue`名以`"myQueuePrefix.message"`开头的队列都会接收到消息。
阅读全文