没有依赖spring容器, java如何实现监听rabbitmq消息
时间: 2023-05-09 09:03:52 浏览: 132
在没有使用Spring容器的情况下,Java可以通过AMQP客户端库实现监听RabbitMQ消息。AMQP客户端库提供了一个API接口,可以用来连接RabbitMQ服务器、创建和绑定队列、发送和接收消息等操作。
1. 连接到RabbitMQ服务器
使用AMQP客户端库连接RabbitMQ服务器需要指定以下参数:
- 主机名:RabbitMQ服务器的主机名或IP地址
- 端口号:RabbitMQ服务器的端口号,默认为5672
- 虚拟主机:RabbitMQ中的虚拟主机名称,默认为/
- 用户名:连接RabbitMQ服务器的用户名
- 密码:连接RabbitMQ服务器的密码
连接代码示例:
```
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");
Connection connection = factory.newConnection();
```
2. 创建和绑定队列
创建队列可以使用以下代码:
```
Channel channel = connection.createChannel();
channel.queueDeclare("hello", false, false, false, null);
```
这里创建了一个名为“hello”的队列,设置参数为:队列不是持久化的(false)、队列不是专用的(false)、队列不是自动删除的(false)。
将队列绑定到队列交换机可以使用以下代码:
```
channel.queueBind("hello", "exchange", "");
```
这里将队列“hello”绑定到名为“exchange”的交换机,并没有使用额外的路由键。
3. 监听队列
使用AMQP客户端库监听队列需要创建一个消费者对象,并实现Consumer接口的回调方法。代码示例:
```
Consumer consumer = new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
String message = new String(body, "UTF-8");
System.out.println("Received message: " + message);
}
};
channel.basicConsume("hello", true, consumer);
```
这里创建了一个默认的消费者对象,重写了handleDelivery回调方法。当监听到队列“hello”中有消息时,会调用handleDelivery方法,在这里输出接收到的消息。
以上就是在没有使用Spring容器的情况下,Java如何实现监听RabbitMQ消息的步骤。
阅读全文