当前位置:首页 > Java

java如何监听rabbit

2026-03-21 06:39:54Java

监听 RabbitMQ 消息的方法

在 Java 中监听 RabbitMQ 消息通常使用 amqp-client 库,以下是具体实现步骤。

添加依赖

在 Maven 项目中添加以下依赖:

<dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>5.12.0</version>
</dependency>

创建连接工厂

配置 RabbitMQ 连接参数:

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setUsername("guest");
factory.setPassword("guest");

建立连接和通道

创建连接和通道对象:

Connection connection = factory.newConnection();
Channel channel = connection.createChannel();

声明队列

确保队列存在,如果不存在则创建:

java如何监听rabbit

channel.queueDeclare("queue_name", false, false, false, null);

创建消费者

实现 DefaultConsumer 或使用 Lambda 表达式:

DeliverCallback deliverCallback = (consumerTag, delivery) -> {
    String message = new String(delivery.getBody(), "UTF-8");
    System.out.println("Received: " + message);
};

开始消费消息

绑定消费者到队列:

channel.basicConsume("queue_name", true, deliverCallback, consumerTag -> {});

完整示例代码

import com.rabbitmq.client.*;

public class RabbitMQListener {
    public static void main(String[] argv) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("localhost");
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        channel.queueDeclare("test_queue", false, false, false, null);
        System.out.println("Waiting for messages...");

        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println("Received: " + message);
        };
        channel.basicConsume("test_queue", true, deliverCallback, consumerTag -> {});
    }
}

高级配置选项

消息确认机制

关闭自动确认,手动确认消息:

java如何监听rabbit

channel.basicConsume("queue_name", false, (consumerTag, delivery) -> {
    String message = new String(delivery.getBody(), "UTF-8");
    channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
}, consumerTag -> {});

设置 QoS

限制未确认消息的数量:

channel.basicQos(1);

绑定交换机

将队列绑定到交换机:

channel.exchangeDeclare("exchange_name", "direct");
channel.queueBind("queue_name", "exchange_name", "routing_key");

异常处理

确保资源正确关闭:

try {
    // RabbitMQ 操作代码
} finally {
    if (channel != null) channel.close();
    if (connection != null) connection.close();
}

标签: javarabbit
分享给朋友:

相关文章

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

java如何创建数组

java如何创建数组

创建数组的基本方法 在Java中,数组是固定大小的同类型元素集合。创建数组需要声明数组类型并初始化。 声明数组 语法格式为 数据类型[] 数组名 或 数据类型 数组名[]: int[] arr1;…

如何学习java语言

如何学习java语言

学习Java语言的系统方法 理解基础概念 Java是一种面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制流语句(if-else、循环)是第一步。熟悉类和对象的概念,理解封装、继承和多态三…

如何学java基础

如何学java基础

学习Java基础的方法 理解Java的基本概念 Java是一种面向对象的编程语言,掌握基础概念如类、对象、继承、多态和封装是必要的。熟悉Java的语法结构,包括变量、数据类型、运算符和控制语句。 安…

react如何与java配合

react如何与java配合

React 与 Java 配合的常见方式 React 作为前端框架,通常与 Java 后端通过 RESTful API 或 GraphQL 进行交互。以下是几种常见的配合方式: RESTful AP…

java js实现转盘抽奖

java js实现转盘抽奖

实现转盘抽奖的步骤 HTML结构 创建转盘抽奖的基本HTML结构,包括转盘区域和抽奖按钮。 <div id="wheel"> <canvas id="wheelCanv…