rabbitMQ高级整合应用第三篇 SimpleMessageListenerContainer
时间: 2024-01-03 12:07:09 浏览: 88
高级Java人才培训专家-RabbitMQ-高级篇
SimpleMessageListenerContainer 是 RabbitMQ 客户端提供的一个用于消息监听的容器,它可以实现对消息的自动监听、自动连接和重连等功能。SimpleMessageListenerContainer 的使用对于 RabbitMQ 的消息监听非常方便。
下面我们来看一下 SimpleMessageListenerContainer 的使用方法:
首先,我们需要添加 RabbitMQ 的依赖:
```xml
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>2.2.11.RELEASE</version>
</dependency>
```
然后,我们需要在 Spring 配置文件中配置相关的 Bean:
```xml
<!-- 创建一个 ConnectionFactory -->
<bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<property name="addresses" value="localhost:5672" />
<property name="username" value="guest" />
<property name="password" value="guest" />
<property name="virtualHost" value="/" />
</bean>
<!-- 配置 RabbitAdmin -->
<bean id="rabbitAdmin" class="org.springframework.amqp.rabbit.core.RabbitAdmin">
<constructor-arg ref="connectionFactory" />
</bean>
<!-- 配置 SimpleMessageListenerContainer -->
<bean id="simpleMessageListenerContainer" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="queueNames" value="test.queue" />
<property name="messageListener" ref="messageListener" />
</bean>
<!-- 配置 MessageListener -->
<bean id="messageListener" class="com.example.MessageListener" />
```
其中,ConnectionFactory 为连接 RabbitMQ 的工厂类,RabbitAdmin 为 RabbitMQ 的管理器,SimpleMessageListenerContainer 为消息监听容器,queueNames 表示需要监听的队列名称,messageListener 表示消息的监听器类。
最后,我们需要编写一个消息监听器类 MessageListener:
```java
public class MessageListener implements ChannelAwareMessageListener {
@Override
public void onMessage(Message message, Channel channel) throws Exception {
System.out.println("接收到消息:" + new String(message.getBody()));
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
}
}
```
在这个类中,我们实现了 ChannelAwareMessageListener 接口,它是 Spring AMQP 提供的一个用于消息监听的接口,其中 onMessage 方法为消息监听回调方法。
至此,我们就可以使用 SimpleMessageListenerContainer 来实现 RabbitMQ 的消息监听了。
阅读全文