当前位置: 首页 > news >正文

如何快速上手RabbitMQ 笔记250304

如何快速上手RabbitMQ

要快速上手 RabbitMQ,可以按照以下步骤进行,从安装到基本使用逐步掌握核心概念和操作:


1. 理解核心概念

  • Producer(生产者):发送消息的程序。
  • Consumer(消费者):接收消息的程序。
  • Queue(队列):存储消息的缓冲区,消息通过队列被发送给消费者。
  • Exchange(交换机):接收生产者发送的消息,并根据规则(绑定和路由键)将消息路由到队列。
  • Binding(绑定):连接交换机和队列的规则,定义消息如何路由。
  • Routing Key(路由键):生产者发送消息时指定的键,用于交换机路由消息。

2. 安装 RabbitMQ

通过 Docker 安装(推荐)
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
  • 5672 是 AMQP 协议端口(消息通信)。
  • 15672 是 Web 管理界面端口,访问 http://localhost:15672,默认账号密码:guest/guest
Ubuntu/Debian
sudo apt-get install rabbitmq-server
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
macOS(Homebrew)
brew install rabbitmq
brew services start rabbitmq

3. 快速上手:发送和接收消息

安装 Python 客户端库
pip install pika
生产者(Producer)示例
import pika# 连接到 RabbitMQ 服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 创建一个队列(如果不存在)
channel.queue_declare(queue='hello')# 发送消息到队列
channel.basic_publish(exchange='', routing_key='hello', body='Hello RabbitMQ!')
print(" [x] Sent 'Hello RabbitMQ!'")connection.close()
消费者(Consumer)示例
import pikadef callback(ch, method, properties, body):print(f" [x] Received {body}")connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 确保队列存在
channel.queue_declare(queue='hello')# 订阅队列并设置回调函数
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

以下是使用 Java 客户端库 amqp-client 实现 RabbitMQ 的简单生产者和消费者代码示例:

1. 添加依赖(Maven)

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

2. 生产者(Producer)

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class Producer {private final static String QUEUE_NAME = "hello";public static void main(String[] args) {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost"); // RabbitMQ 服务器地址try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {// 声明队列(如果不存在则创建)channel.queueDeclare(QUEUE_NAME, false, false, false, null);// 发送消息String message = "Hello RabbitMQ from Java!";channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println(" [x] Sent: '" + message + "'");} catch (Exception e) {e.printStackTrace();}}
}

3. 消费者(Consumer)

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback;public class Consumer {private final static String QUEUE_NAME = "hello";public static void main(String[] args) {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {// 声明队列(与生产者一致)channel.queueDeclare(QUEUE_NAME, false, false, false, null);System.out.println(" [*] Waiting for messages. To exit press CTRL+C");// 定义消息处理回调DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [x] Received: '" + message + "'");};// 订阅队列并消费消息channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {});// 保持消费者持续运行while (true) {Thread.sleep(1000);}} catch (Exception e) {e.printStackTrace();}}
}

4. 运行步骤

  1. 启动 RabbitMQ 服务(如通过 Docker)。
  2. 先运行消费者:它会持续监听队列。
  3. 再运行生产者:发送消息后,消费者会立即打印接收到的消息。

5. 关键代码说明

代码片段说明
ConnectionFactory配置 RabbitMQ 连接信息(地址、端口、用户名、密码等)。
channel.queueDeclare()声明队列(参数:队列名、是否持久化、是否独占、是否自动删除、其他属性)。
channel.basicPublish()发送消息(参数:交换机名、路由键、消息属性、消息体)。
channel.basicConsume()订阅队列并消费消息(参数:队列名、自动ACK、回调函数、取消回调)。

6. 高级配置

消息持久化
// 声明持久化队列(服务重启后队列仍存在)
boolean durable = true;
channel.queueDeclare(QUEUE_NAME, durable, false, false, null);// 发送持久化消息
channel.basicPublish("", QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN, message.getBytes());
手动消息确认(ACK)
// 关闭自动确认(autoAck = false)
channel.basicConsume(QUEUE_NAME, false, deliverCallback, consumerTag -> {});// 在回调中手动确认消息
DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [x] Received: '" + message + "'");// 手动发送 ACKchannel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
};

7. 管理界面验证

访问 http://localhost:15672,在 Web 界面中:

  • 查看 hello 队列是否创建。
  • 监控消息的发布和消费状态。

通过以上代码,你可以在 Java 中快速实现 RabbitMQ 的基本消息通信!


4. 理解交换机(Exchange)类型

RabbitMQ 的交换机决定消息如何路由到队列,常见类型:

  1. Direct Exchange:根据路由键精确匹配。
  2. Fanout Exchange:广播到所有绑定的队列。
  3. Topic Exchange:基于通配符的路由(如 logs.*)。
  4. Headers Exchange:基于消息头的键值对匹配。

5. 管理界面

访问 http://localhost:15672,可以:

  • 查看队列、交换机、绑定的状态。
  • 监控消息流量。
  • 创建虚拟主机(Vhost)和用户权限管理。

6. 高级主题(后续学习)

  1. 消息持久化:防止服务器重启后消息丢失。
    channel.queue_declare(queue='task_queue', durable=True)
    channel.basic_publish(exchange='', routing_key='task_queue', body=message, properties=pika.BasicProperties(delivery_mode=2))
    
  2. 消息确认(ACK):确保消息被正确处理。
    channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=False)
    
  3. 集群与高可用:通过镜像队列实现故障转移。
  4. 插件扩展:如 rabbitmq_delayed_message_exchange 支持延迟消息。

7. 学习资源

  • 官方文档:RabbitMQ Documentation
  • 教程:RabbitMQ Tutorials
  • 书籍:《RabbitMQ in Action》

通过以上步骤,你可以在 1 小时内完成 RabbitMQ 的基础使用,后续再逐步深入高级功能!









以下是 RabbitMQ 快速上手 的核心步骤,帮助你在最短时间内理解并运行第一个消息队列:


1. 安装 RabbitMQ(推荐 Docker 方式)

# 使用 Docker 一键启动(包含 Web 管理界面)
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
  • 访问管理界面http://localhost:15672,账号密码 guest/guest
  • 端口说明
    • 5672:消息通信端口(AMQP 协议)。
    • 15672:Web 管理界面。

2. 基础概念

概念说明
Producer生产者,发送消息的程序。
Consumer消费者,接收消息的程序。
Queue消息的缓冲区,存储待消费的消息。
Exchange交换机,接收消息并根据规则(路由键)将消息分发到队列。

3. 快速示例(Python + pika 客户端)

步骤 1:安装 Python 客户端
pip install pika
步骤 2:生产者(发送消息)
import pika# 连接 RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 创建队列(如果不存在)
channel.queue_declare(queue='hello')# 发送消息到队列
channel.basic_publish(exchange='', routing_key='hello', body='Hello RabbitMQ!')
print(" [x] Sent 'Hello RabbitMQ!'")connection.close()  # 关闭连接
步骤 3:消费者(接收消息)
import pika# 定义消息处理函数
def callback(ch, method, properties, body):print(f" [x] Received {body}")# 连接 RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 确保队列存在
channel.queue_declare(queue='hello')# 订阅队列并消费消息
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
运行结果
  1. 先运行 消费者 脚本(会持续等待消息)。
  2. 再运行 生产者 脚本,消费者会立即打印收到的消息。

4. 核心操作流程

  1. 生产者:连接 RabbitMQ → 声明队列 → 发送消息。
  2. 消费者:连接 RabbitMQ → 声明队列 → 监听队列 → 处理消息。

5. 管理界面(Web UI)

通过 http://localhost:15672 可以:

  • 查看所有队列和交换机。
  • 监控消息流量。
  • 管理用户权限和虚拟主机(Vhost)。

6. 下一步学习

主题说明
交换机类型Direct、Fanout、Topic、Headers 的区别
消息持久化防止服务器重启后消息丢失
消息确认机制确保消息被消费者正确处理
死信队列处理失败或超时的消息

7. 常用命令

# 查看 RabbitMQ 状态
docker exec rabbitmq rabbitmqctl status# 列出所有队列
docker exec rabbitmq rabbitmqctl list_queues# 清除队列数据
docker exec rabbitmq rabbitmqctl purge_queue hello

通过以上步骤,你可以在 10 分钟 内完成 RabbitMQ 的基础使用,后续再逐步深入高级功能!









要快速上手RabbitMQ,可以按照以下步骤进行:

一、了解RabbitMQ基本概念

  1. 消息队列:RabbitMQ是一种消息队列软件,用于在应用程序之间传递消息。消息队列可以看作是放置消息的容器,遵循先进先出原则。
  2. 交换机与队列:交换机负责接收生产者的消息,并根据路由键将消息路由到相应的队列。队列是存储消息的地方,消费者从队列中获取消息进行处理。
  3. 虚拟主机:RabbitMQ中的虚拟主机提供资源隔离、权限控制和配置独立性,使得同一台服务器上的多个应用能够安全、独立地运行在自己的“虚拟环境”中。

二、安装与配置RabbitMQ

  1. 安装Erlang:由于RabbitMQ是基于Erlang语言开发的,因此需要先安装Erlang运行环境。可以从Erlang官网下载安装包并进行安装。
  2. 安装RabbitMQ:从RabbitMQ官网下载安装包,按照提示进行安装。安装完成后,RabbitMQ会在系统开始菜单中添加服务快捷键。
  3. 启动RabbitMQ服务:通过开始菜单中的RabbitMQ Service启动服务。如果需要,也可以通过命令行进行启动、停止和重启操作。
  4. 开启Web管理界面:通过执行rabbitmq-plugins enable rabbitmq_management命令开启Web管理界面,然后在浏览器中输入http://localhost:15672进行访问。默认账号密码为guest/guest。

三、编写代码实现消息发布与消费

  1. 引入依赖:在项目中引入RabbitMQ的客户端库,例如Java项目中可以引入amqp-client库。
  2. 创建连接和信道:使用ConnectionFactory创建连接,然后通过连接创建信道。信道是用于发送和接收消息的通道。
  3. 声明队列和交换机:根据需要声明队列和交换机。队列用于存储消息,而交换机用于将消息路由到队列。
  4. 发送消息:使用信道的basicPublish方法发送消息到指定的交换机和队列中。
  5. 接收消息:使用信道的basicConsume方法订阅队列并消费消息。可以设置自动确认或手动确认消息的处理情况。

四、实践与调试

  1. 编写简单的生产者和消费者程序进行测试,确保消息能够正确地发送到队列并被消费者接收处理。
  2. 尝试使用不同的交换机类型和路由键来实现更复杂的消息路由逻辑。
  3. 监控RabbitMQ的运行状态和性能指标,确保系统的稳定性和高效性。

通过以上步骤,你应该能够快速上手RabbitMQ并进行基本的操作和开发工作。在实际应用中,还需要根据具体需求进行更深入的学习和实践。









RabbitMQ快速上手可以从以下几个方面进行:

一、了解基本概念

  1. 消息队列:RabbitMQ是一个开源的消息队列软件,它允许应用程序之间异步地传递数据。消息队列可以看作是放置消息的容器,按照先进先出的原则进行处理。

  2. Producer和Consumer

    • Producer(生产者):负责创建消息并发送到RabbitMQ。
    • Consumer(消费者):从RabbitMQ接收消息进行处理。
  3. Exchange(交换机):消息到达RabbitMQ的第一站,负责接收生产者发送的消息,并根据特定的规则将这些消息路由到一个或多个Queue中。常见的交换机类型包括Direct(点对点)、Topic(发布-订阅)等。

  4. Queue(队列):RabbitMQ的内部对象,用于存储消息。多个消费者可以订阅同一个队列。

  5. Virtual Host:为消息队列提供了一种逻辑上的隔离机制。一个Broker可以开设多个vhost,用于隔离不同的应用环境。

二、安装与配置

  1. 安装Erlang:RabbitMQ是用Erlang编写的,因此需要先安装Erlang环境。

  2. 安装RabbitMQ:从官方网站下载安装包并按照指引进行安装。

  3. 启动服务:安装完成后,启动RabbitMQ服务。

  4. 开启Web管理:通过相关命令开启RabbitMQ的Web管理功能,便于可视化管理。

三、编写代码

  1. 引入依赖:在项目中引入RabbitMQ的客户端依赖库。

  2. 建立连接:创建与RabbitMQ的连接,并开启信道(Channel)。

  3. 声明交换机和队列:根据需要声明交换机和队列,以便进行消息的路由和存储。

  4. 发送和接收消息:通过信道发送消息到交换机,并由交换机路由到相应的队列;消费者从队列中接收并处理消息。

四、实践与调试

  1. 编写测试程序:创建简单的生产者和消费者程序,测试消息的发送和接收功能。

  2. 复杂路由逻辑:尝试使用不同的交换机类型和路由规则,实现更复杂的消息传递逻辑。

  3. 监控与调优:利用RabbitMQ的管理界面或相关监控工具,观察RabbitMQ的运行状态和性能指标,确保系统的稳定性和高效性。

总结:通过了解RabbitMQ的基本概念、安装配置、编写代码以及实践与调试等步骤,可以快速上手RabbitMQ并实现消息队列的基本操作和开发工作。在实际应用中还需根据具体需求进行深入学习和实践。









要快速上手RabbitMQ,你可以按照以下步骤进行:

1. 了解RabbitMQ的基本概念和用途[@1@]

RabbitMQ是一种典型的消息队列(Message Queue,MQ)产品。MQ的作用是将同步的事件驱动改为异步的消息驱动,通过消息队列在不同的应用程序之间进行数据传递。这种机制能够实现解耦、异步和削峰的效果。

2. 安装和配置RabbitMQ环境[@2@]

  • 前置环境:RabbitMQ是基于Erlang语言开发的,因此在安装RabbitMQ之前需要先安装Erlang语言环境。需要注意的是,RabbitMQ与Erlang语言之间是有版本对应关系的。
  • 安装RabbitMQ服务:可以通过多种方式安装RabbitMQ服务,如手动安装、使用Docker等。在学习阶段,建议手动安装以更好地了解产品细节。安装完成后,可以使用service rabbitmq-server start等指令来启动和停止RabbitMQ服务。

3. 学习RabbitMQ的核心概念[@2@]

  • 队列(Queue):存储消息的FIFO(先进先出)数据结构。
  • 交换机(Exchange):负责消息的路由,根据路由规则将消息发送到指定的队列。
  • 绑定(Binding):定义了交换机和队列之间的关系,指定了消息如何从交换机路由到队列。

4. 通过编写简单的示例程序来实践RabbitMQ的基本操作[@2@]

以下是一个简单的示例,展示了如何使用Java和RabbitMQ客户端库来发送和接收消息。

发送消息(Publisher)
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;public class PublisherTest {public static void main(String[] args) throws IOException, TimeoutException {// 建立连接ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost"); // 设置RabbitMQ服务器IPfactory.setPort(5672); // 设置端口号factory.setVirtualHost("/"); // 设置虚拟主机factory.setUsername("guest"); // 设置用户名factory.setPassword("guest"); // 设置密码Connection connection = factory.newConnection();// 创建通道Channel channel = connection.createChannel();// 声明队列String queueName = "test.queue";channel.queueDeclare(queueName, false, false, false, null);// 发送消息String message = "Hello, RabbitMQ!";channel.basicPublish("", queueName, null, message.getBytes());System.out.println("发送消息成功:【" + message + "】");// 关闭通道和连接channel.close();connection.close();}
}
接收消息(Consumer)
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;public class ConsumerTest {public static void main(String[] args) throws IOException, TimeoutException {// 建立连接ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost"); // 设置RabbitMQ服务器IPfactory.setPort(5672); // 设置端口号factory.setVirtualHost("/"); // 设置虚拟主机factory.setUsername("guest"); // 设置用户名factory.setPassword("guest"); // 设置密码Connection connection = factory.newConnection();// 创建通道Channel channel = connection.createChannel();// 声明队列String queueName = "test.queue";channel.queueDeclare(queueName, false, false, false, null);// 订阅消息DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println("接收消息成功:【" + message + "】");};channel.basicConsume(queueName, true, deliverCallback, consumerTag -> { });}
}

5. 查阅官方文档或相关教程,深入了解RabbitMQ的高级特性和最佳实践[@1@]

RabbitMQ的官方文档提供了详细的使用指南和API参考,是学习RabbitMQ的重要资源。此外,还可以查阅相关的教程和博客,了解RabbitMQ的高级特性和最佳实践,如消息确认、持久化、事务等。

通过以上步骤,你应该能够快速上手RabbitMQ,并开始在实际项目中使用它。









快速上手RabbitMQ,首先需要了解其基本概念、安装配置方法以及如何编写简单的生产者和消费者程序。以下是一个详细步骤指南:

一、理解基本概念

RabbitMQ 是一个实现高级消息队列协议(AMQP)的开源消息代理软件(亦称消息中间件)。它主要用于应用程序之间传递消息,并且支持多种消息分发策略。在开始使用 RabbitMQ 之前,你需要熟悉一些核心概念:

  • Message(消息):应用程序间传递的数据包。
  • Queue(队列):存储消息的地方。
  • Exchange(交换机):接收生产者发送的消息并根据一定的规则将消息路由到一个或多个队列。
  • Binding(绑定):定义了 Exchange 和 Queue 之间的关系,即消息如何从 Exchange 路由到 Queue。
  • Routing Key(路由键):用于决定消息应该被发送到哪个队列。
  • Virtual Host(虚拟主机):提供了一个逻辑分组的概念,允许不同的用户访问不同的队列和交换机。

二、安装RabbitMQ

为了运行 RabbitMQ,你需要先安装 Erlang 语言环境,因为 RabbitMQ 是用 Erlang 编写的 。接下来,你可以选择适合自己操作系统的 RabbitMQ 安装包进行安装。例如,在 Ubuntu 上可以通过 apt-get 命令来安装 RabbitMQ 。

确保你也安装了 RabbitMQ 的管理插件以便能够通过 Web 界面来监控和管理你的 RabbitMQ 实例。默认情况下,你可以通过 http://localhost:15672 访问 RabbitMQ 的管理界面,并使用默认的用户名和密码(guest/guest)登录。

三、创建工程并添加依赖

如果你打算使用 Java 来开发 RabbitMQ 应用,那么可以创建一个 Maven 或 Gradle 工程,并添加相应的依赖项。例如,在 Maven 中你可能需要添加如下依赖:

<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>x.y.z</version>
</dependency>

这里的版本号应根据实际使用的 RabbitMQ 版本来调整。

四、编写生产者代码

下面是一个简单的生产者代码示例,它会向指定的队列发送一条消息:

ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {channel.queueDeclare(QUEUE_NAME, false, false, false, null);String message = "Hello World!";channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println(" [x] Sent '" + message + "'");
}

这段代码首先创建了一个连接工厂并设置了 RabbitMQ 服务器的位置,然后建立了与服务器的连接和通道,并声明了一个名为 QUEUE_NAME 的队列,最后发送了一条消息到该队列中 。

五、编写消费者代码

接着是消费者的代码,它负责监听特定队列并处理接收到的消息:

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

这个消费者设置了一个回调函数,每当有新消息到达时就会调用该函数处理消息 。

六、测试

启动 RabbitMQ 服务,然后分别运行生产者和消费者的程序。你应该能够在消费者的控制台看到输出的消息内容,表明消息已经成功地从生产者传送到消费者。

以上就是快速上手 RabbitMQ 的基本流程。当然,RabbitMQ 还支持更复杂的工作模式和特性,如工作队列、发布/订阅、路由、主题等,这些都需要进一步学习和实践 。此外,官方文档和社区提供的资源也是深入学习的好帮手。









快速上手 RabbitMQ 涉及几个关键步骤,包括安装 RabbitMQ、理解其基本概念、建立连接、发送和接收消息等。下面是一个简化的指南来帮助你开始使用 RabbitMQ。

1. 安装 RabbitMQ

首先,你需要在你的机器上安装 RabbitMQ。根据你的操作系统选择合适的安装方式:

  • Linux: 可以通过包管理器安装,如 apt-getyum
  • Windows: 下载并运行官方提供的安装程序。
  • MacOS: 使用 Homebrew 进行安装。

确保你也安装了 Erlang,因为 RabbitMQ 是用 Erlang 编写的 。此外,为了方便管理和监控,你可以启用 RabbitMQ 的管理插件,通常可以通过命令行工具 rabbitmq-plugins enable rabbitmq_management 来完成。

2. 理解核心概念

在开始编程之前,理解 RabbitMQ 的一些核心概念是很有帮助的:

  • Producer(生产者):负责生成消息的应用程序。
  • Consumer(消费者):负责接收和处理消息的应用程序。
  • Queue(队列):存储消息的地方。
  • Exchange(交换机):决定消息如何路由到队列。
  • Binding(绑定):定义了 Exchange 和 Queue 之间的关系。
  • Routing Key(路由键):用于匹配 Exchange 和 Binding 的关键字。

3. 配置开发环境

对于 Java 开发者来说,你需要添加 RabbitMQ 的 Java 客户端库到你的项目中。如果你使用的是 Maven 项目,可以在 pom.xml 中添加以下依赖:

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

请根据需要调整版本号。

4. 编写代码

生产者代码示例

下面是一个简单的生产者代码示例,它将一条消息发送到一个名为 simple_queue 的队列中:

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class Send {private final static String QUEUE_NAME = "simple_queue";public static void main(String[] argv) throws Exception {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {channel.queueDeclare(QUEUE_NAME, false, false, false, null);String message = "Hello World!";channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println(" [x] Sent '" + message + "'");}}
}
消费者代码示例

接着是消费者的代码,它监听特定队列并处理接收到的消息:

import com.rabbitmq.client.*;public class Recv {private final static String QUEUE_NAME = "simple_queue";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(QUEUE_NAME, false, false, false, null);DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), "UTF-8");System.out.println(" [x] Received '" + message + "'");};channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });}
}

5. 测试与调试

启动 RabbitMQ 服务,并确保管理界面可以访问。然后分别运行上述的生产者和消费者程序。你应该能够在消费者的控制台看到输出的消息内容,这表明消息已经成功地从生产者传送到消费者。

6. 进一步学习

一旦熟悉了基本的操作,你可以进一步探索 RabbitMQ 提供的不同工作模式,如 Work Queues、Publish/Subscribe、Routing 和 Topics 。每个模式都有其特定的用途和适用场景,可以帮助你构建更加复杂的消息传递系统。

以上就是快速上手 RabbitMQ 的基本流程。记住,实践是最好的老师,通过不断地编写和测试代码,你会逐渐掌握 RabbitMQ 的更多特性和最佳实践。









RabbitMQ是一个流行的开源消息队列系统,以下是一些帮助你快速上手RabbitMQ的方法:

了解基本概念

  • 消息队列:理解消息队列作为一种异步通信机制的作用,它允许不同的应用程序或服务之间进行解耦,实现可靠的消息传递。
  • RabbitMQ中的角色
    • 生产者:负责创建并发送消息到消息队列。
    • 消费者:从消息队列中获取并处理消息。
    • 交换机(Exchange):接收生产者发送的消息,并根据路由键将消息路由到相应的队列。
    • 队列(Queue):存储消息的缓冲区,等待消费者来获取消息。
    • 绑定(Binding):将交换机和队列关联起来,定义了消息如何从交换机路由到队列。

安装与配置

  • 安装RabbitMQ:根据你的操作系统,按照官方文档的指导进行RabbitMQ的安装。例如在Linux系统中,可以使用包管理工具进行安装;在Windows系统中,可以下载安装包进行安装。
  • 安装管理插件:RabbitMQ提供了管理插件,通过它可以方便地在Web界面中管理和监控RabbitMQ服务器。安装完成后,可通过http://localhost:15672访问管理界面,默认用户名和密码通常都是guest
  • 配置环境:了解如何配置RabbitMQ的环境参数,如内存限制、磁盘空间限制等。可以通过修改配置文件或在启动命令中传递参数来进行配置。

学习客户端API

  • 选择编程语言:RabbitMQ支持多种编程语言,如Python、Java、C#等。选择你熟悉的语言,然后学习对应的客户端API。
  • 连接到RabbitMQ服务器:使用客户端API建立与RabbitMQ服务器的连接。例如在Python中,使用pika库可以这样连接:
import pikaconnection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
  • 创建交换机和队列:使用API创建交换机和队列,并将它们绑定在一起。
channel.exchange_declare(exchange='my_exchange', exchange_type='direct')
channel.queue_declare(queue='my_queue')
channel.queue_bind(queue='my_queue', exchange='my_exchange', routing_key='my_routing_key')
  • 发送和接收消息:编写代码实现生产者发送消息和消费者接收消息的功能。
# 生产者发送消息
message = "Hello, RabbitMQ!"
channel.basic_publish(exchange='my_exchange', routing_key='my_routing_key', body=message)# 消费者接收消息
def callback(ch, method, properties, body):print(f"Received message: {body.decode()}")channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)
channel.start_consuming()

实践与案例

  • 官方文档示例:参考RabbitMQ官方文档中的示例代码,了解不同场景下的使用方式和最佳实践。
  • 小型项目实践:尝试创建一些小型的项目,如订单处理系统、任务队列等,将RabbitMQ应用到实际项目中,加深对它的理解和掌握。
  • 学习他人代码:在代码托管平台上搜索RabbitMQ相关的开源项目,学习他人的代码结构和设计思路。

监控与维护

  • 监控工具:利用RabbitMQ管理界面或第三方监控工具,如Prometheus、Grafana等,监控RabbitMQ的运行状态,包括消息队列的长度、消息的发送和接收速率、服务器资源使用情况等。
  • 日志分析:了解如何查看和分析RabbitMQ的日志文件,以便及时发现和解决问题。









要快速上手RabbitMQ,可以按照下面的步骤进行:

1. 理解核心概念

  • 消息队列:本质上是一种在应用程序或服务间实现异步通信的机制,能够将消息存储在队列中,直到接收方准备好处理。这样可以有效解耦生产者和消费者,提高系统的可扩展性和稳定性。
  • RabbitMQ核心组件
    • 生产者(Producer):负责创建消息并将其发送到RabbitMQ。
    • 消费者(Consumer):从RabbitMQ中获取消息并进行处理。
    • 交换机(Exchange):接收生产者发送的消息,并根据规则将消息路由到一个或多个队列。
    • 队列(Queue):用于存储消息,直到被消费者处理。
    • 绑定(Binding):定义了交换机和队列之间的关联关系,决定消息如何从交换机路由到队列。

2. 安装与启动

安装
  • Linux(以Ubuntu为例)
# 添加Erlang仓库
wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | sudo apt-key add -
echo "deb https://packages.erlang-solutions.com/ubuntu focal contrib" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
# 更新包列表
sudo apt-get update
# 安装Erlang
sudo apt-get install erlang
# 添加RabbitMQ仓库
echo "deb https://dl.bintray.com/rabbitmq/debian focal main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
wget -O- https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc | sudo apt-key add -
# 安装RabbitMQ
sudo apt-get install rabbitmq-server
  • Windows:从RabbitMQ官方下载页面下载Windows安装包,然后按照安装向导完成安装。
启动
  • Linux
sudo systemctl start rabbitmq-server
  • Windows:在开始菜单中找到RabbitMQ服务并启动。

3. 启用管理插件

RabbitMQ的管理插件提供了一个直观的Web界面,方便管理和监控RabbitMQ服务器。

sudo rabbitmq-plugins enable rabbitmq_management

启动后,通过浏览器访问 http://localhost:15672 ,使用默认用户名 guest 和密码 guest 登录。

4. 选择客户端库并编写代码

Python示例(使用pika库)
  • 安装pika
pip install pika
  • 生产者代码
import pika# 建立与RabbitMQ服务器的连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 声明一个队列
channel.queue_declare(queue='hello')# 发送消息
message = 'Hello, RabbitMQ!'
channel.basic_publish(exchange='', routing_key='hello', body=message)
print(f" [x] Sent '{message}'")# 关闭连接
connection.close()
  • 消费者代码
import pika# 建立与RabbitMQ服务器的连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 声明一个队列
channel.queue_declare(queue='hello')# 定义回调函数,用于处理接收到的消息
def callback(ch, method, properties, body):print(f" [x] Received '{body.decode()}'")# 告诉RabbitMQ使用callback函数从队列中接收消息
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)print(' [*] Waiting for messages. To exit press CTRL+C')
# 开始消费消息
channel.start_consuming()

5. 运行代码

  • 分别保存上述生产者和消费者代码为 producer.pyconsumer.py
  • 先运行消费者代码:
python consumer.py
  • 再运行生产者代码:
python producer.py

此时,你应该能在消费者的控制台看到接收到的消息。

6. 深入学习与实践

  • 学习更多模式:RabbitMQ提供了多种消息传递模式,如工作队列、发布/订阅、路由、主题等,深入学习这些模式可以满足不同的业务需求。
  • 实践项目:尝试将RabbitMQ应用到实际的小型项目中,如异步任务处理、微服务通信等,通过实践加深对其的理解和掌握。









以下是快速上手 RabbitMQ 的步骤:

1. 安装 RabbitMQ

  • 安装 Erlang:RabbitMQ 基于 Erlang 语言开发,因此需要先安装 Erlang。例如,在 Ubuntu 系统中,可以使用以下命令安装:
    sudo apt-get update
    sudo apt-get install erlang
    
  • 安装 RabbitMQ:在 Ubuntu 系统中,可以使用以下命令安装 RabbitMQ:
    sudo apt-get install rabbitmq-server
    
  • 启动服务
    sudo systemctl start rabbitmq-server
    sudo systemctl enable rabbitmq-server
    sudo systemctl status rabbitmq-server
    
  • 启用管理插件:为了方便管理,可以启用 RabbitMQ 的管理插件:
    sudo rabbitmq-plugins enable rabbitmq_management
    
    启用后,可以通过浏览器访问 http://localhost:15672,默认用户名和密码为 guest/guest

2. 了解核心概念

  • 生产者(Producer):发送消息到队列的程序。
  • 消费者(Consumer):从队列中接收消息的程序。
  • 交换机(Exchange):接收生产者的消息并将它们路由到队列。
  • 队列(Queue):存储消息的容器。
  • 绑定(Binding):将交换机和队列关联起来,定义消息的路由规则。

3. 编写简单的生产者和消费者代码

以下是一个基于 Python 的简单示例,使用 pika 库与 RabbitMQ 交互:

  • 安装依赖
    pip install pika
    
  • 生产者代码
    import pikaconnection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()channel.queue_declare(queue='my_queue')
    channel.basic_publish(exchange='', routing_key='my_queue', body='Hello, world!')
    print("Sent 'Hello, world!'")
    connection.close()
    
  • 消费者代码
    import pikadef callback(ch, method, properties, body):print(f"Received {body}")connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()channel.queue_declare(queue='my_queue')
    channel.basic_consume(queue='my_queue', on_message_callback=callback, auto_ack=True)print('Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()
    

4. 使用管理界面进行操作

  • 访问管理界面:通过浏览器访问 http://localhost:15672,登录后可以:
    • 创建用户和权限。
    • 管理交换机、队列和绑定。
    • 监控系统性能和消息队列状态。
  • 创建队列和交换机:可以在管理界面中手动创建队列和交换机,也可以通过代码动态创建。

5. 进阶学习

  • 深入理解交换机类型:RabbitMQ 支持多种交换机类型(如 Direct、Fanout、Topic 等),每种类型适用于不同的场景。
  • 持久化和消息确认:了解如何确保消息在 RabbitMQ 中持久化存储以及如何实现消息确认机制。
  • 集群部署:在生产环境中,RabbitMQ 可以通过集群部署来提高可用性和扩展性。

通过以上步骤,你可以快速上手 RabbitMQ,并开始构建基于消息队列的应用程序。









好的,以下是一个更简洁的 RabbitMQ快速上手指南,帮助你快速搭建和使用RabbitMQ。


1. 安装 RabbitMQ

1.1 安装 Erlang

RabbitMQ 基于 Erlang 开发,因此需要先安装 Erlang。以 Linux 系统为例:

sudo apt-get update
sudo apt-get install erlang
1.2 安装 RabbitMQ

在 Linux 上安装 RabbitMQ:

sudo apt-get install rabbitmq-server
1.3 启动并启用管理插件

启动 RabbitMQ 服务,并启用管理插件以便通过 Web 管理界面操作:

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
sudo rabbitmq-plugins enable rabbitmq_management

访问管理界面:http://localhost:15672,默认用户名和密码为 guest/guest


2. 核心概念

  • 生产者(Producer):发送消息的程序。
  • 消费者(Consumer):接收消息的程序。
  • 队列(Queue):存储消息的容器。
  • 交换机(Exchange):将消息路由到队列。
  • 绑定(Binding):连接交换机和队列。

3. 编写简单的生产者和消费者

以下是一个基于 Python 的简单示例,使用 pika 库。

3.1 安装依赖
pip install pika
3.2 生产者代码
import pika# 创建连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 声明队列
channel.queue_declare(queue='hello_queue')# 发送消息
channel.basic_publish(exchange='', routing_key='hello_queue', body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
3.3 消费者代码
import pikadef callback(ch, method, properties, body):print(f" [x] Received {body}")# 创建连接
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 声明队列
channel.queue_declare(queue='hello_queue')# 设置消费者
channel.basic_consume(queue='hello_queue', on_message_callback=callback, auto_ack=True)print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

运行生产者代码后,消费者会接收到消息。


4. 使用管理界面

通过 http://localhost:15672 访问管理界面:

  • 创建队列和交换机:可以在界面中手动创建队列和交换机。
  • 查看消息:实时监控队列中的消息和状态。

5. 进阶学习

  • 交换机类型:学习 Direct、Fanout、Topic 等交换机类型的使用场景。
  • 持久化和消息确认:确保消息在服务器重启后不会丢失。
  • 集群部署:在生产环境中,通过集群提高可用性和性能。

6. 资源推荐

  • 官方文档:https://www.rabbitmq.com/documentation.html
  • 教程:https://www.rabbitmq.com/getstarted.html

通过以上步骤,你可以在短时间内快速上手 RabbitMQ,并开始构建基于消息队列的应用程序。









1. 基础概念 \boxed{1.\ 基础概念} 1. 基础概念

  • 消息队列:应用程序间的通信中介,实现解耦/异步/削峰
  • AMQP协议:RabbitMQ遵循的高级消息队列协议
  • 核心组件
    • 生产者(Producer):发送消息
    • 消费者(Consumer):接收消息
    • 队列(Queue):消息存储容器
    • 交换机(Exchange):消息路由中枢
    • 绑定(Binding):连接交换机与队列的规则

2. 环境搭建 \boxed{2.\ 环境搭建} 2. 环境搭建

# Ubuntu安装
sudo apt-get install erlang
sudo apt-get install rabbitmq-server
sudo service rabbitmq-server start# Mac安装
brew install rabbitmq
/usr/local/sbin/rabbitmq-server# Windows
官网下载安装包,默认配置安装后启动服务

3. 第一个示例( P y t h o n ) \boxed{3.\ 第一个示例(Python)} 3. 第一个示例(Python
① 安装客户端库:

pip install pika

② 生产者代码:

import pikaconnection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()channel.queue_declare(queue='hello')  # 创建队列
channel.basic_publish(exchange='', routing_key='hello',body='Hello RabbitMQ!')
connection.close()

③ 消费者代码:

import pikadef callback(ch, method, properties, body):print(f"收到消息: {body}")connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()channel.queue_declare(queue='hello')
channel.basic_consume(queue='hello',auto_ack=True,on_message_callback=callback)print('等待消息...')
channel.start_consuming()

4. 核心模式 \boxed{4.\ 核心模式} 4. 核心模式

Binding
Routing Key
Producer
Exchange
Queue1
Queue2
Consumer1
Consumer2

5. 常用场景 \boxed{5.\ 常用场景} 5. 常用场景

  1. 工作队列:分布式任务处理
  2. 发布/订阅:广播消息
  3. 路由模式:根据路由键定向消息
  4. 主题订阅:使用通配符匹配路由键

6. 管理工具 \boxed{6.\ 管理工具} 6. 管理工具

  • Web控制台:http://localhost:15672(默认账号guest/guest)
  • 命令行工具:
rabbitmqctl list_queues        # 查看队列
rabbitmqctl list_exchanges     # 查看交换机
rabbitmqctl list_bindings      # 查看绑定关系

注意事项 \boxed{注意事项} 注意事项

  1. 生产环境务必修改默认账号
  2. 消息持久化需要同时设置队列和消息属性
  3. 合理设置QoS防止消费者过载
  4. 使用确认机制保证消息可靠性

下一步建议:尝试不同的交换机类型(direct/topic/fanout/headers),实践消息确认机制,并探索集群部署方案。









RabbitMQ快速上手指南(含代码示例)

  1. 核心概念
  • 消息队列:应用间通信的中间件,实现 生产者 → 队列 → 消费者 生产者 \rightarrow 队列 \rightarrow 消费者 生产者队列消费者的异步模式
  • 核心组件:
    • 生产者(Producer):发送消息的程序
    • 消费者(Consumer):接收消息的程序
    • 队列(Queue):存储消息的缓冲区
    • 交换机(Exchange):消息路由组件
    • 绑定(Binding):连接交换机和队列的规则
  1. 安装步骤
# Ubuntu/Debian
sudo apt-get install erlang
sudo apt-get install rabbitmq-server# CentOS
sudo yum install erlang
sudo rpm -Uvh rabbitmq-server-*.rpm# macOS
brew install rabbitmq
  1. 基本使用(Python示例)
    (1) 安装客户端库
pip install pika

(2) 生产者代码

import pikaconnection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 创建队列
channel.queue_declare(queue='hello')# 发送消息
channel.basic_publish(exchange='',  # 使用默认交换机routing_key='hello',body='Hello RabbitMQ!'
)
connection.close()

(3) 消费者代码

import pikadef callback(ch, method, properties, body):print(f"收到消息: {body.decode()}")connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()channel.queue_declare(queue='hello')
channel.basic_consume(queue='hello',auto_ack=True,on_message_callback=callback
)print('等待消息...')
channel.start_consuming()
  1. 交换机类型
  • 直连交换机(Direct):精确路由
  • 扇出交换机(Fanout):广播模式
  • 主题交换机(Topic):模式匹配路由
  • 头交换机(Headers):基于消息头路由
  1. 管理界面
    访问地址:http://localhost:15672
    默认账号:guest / guest

小提示:

  1. 生产环境务必修改默认密码
  2. 消息持久化需设置delivery_mode=2
  3. 使用basic_ack实现消息确认
  4. 推荐使用连接池管理连接

常用客户端库:

  • Python: pika
  • Java: amqp-client
  • Node.js: amqplib
  • Go: amqp

典型应用场景:

  • 异步任务处理
  • 应用解耦
  • 流量削峰
  • 分布式系统通信









以下是快速上手RabbitMQ的详细步骤:

  1. 了解基础概念

    • 生产者(Producer):负责发送消息到RabbitMQ[1]。
    • 消费者(Consumer):从RabbitMQ接收消息[1]。
    • 交换机(Exchange):接收生产者的消息,并根据路由规则将消息转发到队列中[5]。
    • 队列(Queue):存储消息的容器,每个队列都有一个名称,消费者订阅特定的队列来获取消息[5]。
    • 虚拟主机(Virtual Host):用于逻辑上的隔离,一个Broker可以有多个虚拟主机,类似于MySQL中的不同数据库[1]。
  2. 安装RabbitMQ

    • 下载:访问RabbitMQ官方网站,根据您的操作系统选择合适的版本进行下载。
    • 安装依赖环境:RabbitMQ是基于Erlang语言开发的,因此需要先安装Erlang环境。不同版本的RabbitMQ需要的Erlang版本可能不同,请参考官方文档进行选择和安装。
    • 安装RabbitMQ:运行下载的安装包,按照提示完成安装。安装完成后,可以通过命令行或服务管理器启动RabbitMQ服务。
  3. 配置RabbitMQ

    • 管理插件:RabbitMQ提供了一个管理插件,可以通过Web界面进行管理和监控。默认情况下,这个插件是关闭的,需要在命令行中启用它。例如,在Windows系统中,可以在命令行中输入rabbitmq-plugins enable rabbitmq_management来启用管理插件[4]。
    • 创建用户和虚拟主机:为了安全起见,可以创建新的用户和虚拟主机,并为不同的用户分配不同的权限。使用rabbitmqctl命令可以添加用户、设置权限等。例如,添加一个新用户的命令为rabbitmqctl add_user username password,将用户添加到虚拟主机的命令为rabbitmqctl set_permissions -p /username ".*" ".*" ".*"
  4. 编写代码

    • 生产者代码示例
      • 建立连接:使用ConnectionFactory类创建一个与RabbitMQ的连接[1]。
      • 创建通道:通过连接创建一个通道,所有的操作都在通道上进行[1]。
      • 声明队列:指定要发送消息的队列名称,如果队列不存在则创建[1]。
      • 发送消息:将消息发送到指定的队列中。
      • 关闭连接:消息发送完成后,关闭通道和连接[1]。
    • 消费者代码示例
      • 建立连接和通道:与生产者类似,首先建立与RabbitMQ的连接和通道[1]。
      • 订阅队列:告诉RabbitMQ想要接收哪个队列的消息[1]。
      • 接收消息:等待并接收消息,当有消息到达时,会自动调用回调函数进行处理[1]。
      • 关闭连接:处理完消息后,关闭通道和连接[1]。

总之,以上步骤可以帮助你快速上手RabbitMQ,但RabbitMQ是一个功能强大且复杂的消息中间件,要想深入掌握其原理和应用,还需要进一步学习和实践。









RabbitMQ是一款流行的开源消息中间件,它支持多种消息传递模式,能够实现应用程序之间的异步通信、解耦和流量削峰等功能。以下是快速上手RabbitMQ的步骤:

  1. 了解基本概念

    • 生产者(Producer):负责发送消息到RabbitMQ的客户端[2]。
    • 消费者(Consumer):从RabbitMQ接收消息的客户端[2]。
    • 交换机(Exchange):接收生产者的消息,并根据路由规则将消息转发到不同的队列[2]。
    • 队列(Queue):存储消息的容器,等待消费者消费[2]。
    • 虚拟主机(Virtual Host):用于逻辑上的隔离,每个虚拟主机可以有多个队列、交换机和用户[2]。
  2. 安装RabbitMQ

    • 下载并安装Erlang环境:RabbitMQ基于Erlang语言开发,需要先安装Erlang环境[1][3]。
    • 下载安装包并启动服务:根据你的操作系统选择对应的安装包进行下载安装,然后启动RabbitMQ服务[1][3]。
    • 启用管理插件:通过命令行启用RabbitMQ的管理插件,以便通过Web界面进行管理[1][3]。
  3. 创建项目并引入依赖

    • 在IDE(如IntelliJ IDEA)中创建一个新的Maven或Gradle项目[1][4]。
    • 在项目的pom.xmlbuild.gradle文件中添加RabbitMQ的客户端依赖[1][4]。
  4. 编写代码

    • 建立连接:使用ConnectionFactory类创建与RabbitMQ的连接[2]。
    • 创建通道:通过连接创建一个通道,所有操作都在通道上完成[2]。
    • 声明队列:指定要发送或接收消息的队列名称,如果队列不存在则创建[2]。
    • 发送消息:生产者通过通道将消息发布到指定的队列[2]。
    • 接收消息:消费者通过通道订阅队列并接收消息[2]。
  5. 运行和测试

    • 启动RabbitMQ服务和你的应用程序[1]。
    • 运行生产者代码,观察消息是否成功发送到队列[1]。
    • 运行消费者代码,检查是否能正确接收并处理消息[1]。

总的来说,通过以上步骤,你应该能够快速上手RabbitMQ,并在实际应用中发挥其强大的消息中间件功能。不断实践和深入学习,你将能更好地利用RabbitMQ解决复杂的消息通信问题。









以下是快速上手RabbitMQ的分步指南,结合核心概念、环境搭建和基础代码实现,帮助开发者快速掌握基本用法:

一、环境安装与配置

  1. 安装Erlang环境
    RabbitMQ基于Erlang开发,需先安装Erlang:

    • Windows:从Erlang官网下载安装包直接运行
    • Linux(Ubuntu)sudo apt-get install erlang
    • MacOSbrew install erlang
  2. 安装RabbitMQ服务

    • Docker方式(推荐)
      docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
      
    • 原生安装
      从官网下载对应系统的安装包,完成后启动服务
  3. 启用管理插件
    执行命令启用Web管理界面:

    rabbitmq-plugins enable rabbitmq_management
    

    访问http://localhost:15672,默认账号guest/guest


二、核心概念快速理解

  1. 生产者(Producer):发送消息到交换机的客户端
  2. 消费者(Consumer):从队列接收消息的客户端
  3. 交换机(Exchange):接收消息并路由到队列,支持4种类型:
    • Direct:精确匹配Routing Key
    • Fanout:广播到所有绑定队列
    • Topic:通配符匹配Routing Key
    • Headers:基于消息头匹配
  4. 队列(Queue):存储消息的缓冲区,具有FIFO特性
  5. 绑定(Binding):定义交换机与队列的路由规则

三、Java客户端基础开发

  1. 添加依赖

    <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.9.0</version>
    </dependency>
    
  2. 创建连接工具类

    public class RabbitmqUtils {private static ConnectionFactory factory = new ConnectionFactory();static {factory.setHost("localhost");factory.setPort(5672);factory.setUsername("guest");factory.setPassword("guest");factory.setVirtualHost("/");}public static Connection getConnection() throws Exception {return factory.newConnection();}
    }
    
  3. 生产者发送消息

    try (Connection conn = RabbitmqUtils.getConnection();Channel channel = conn.createChannel()) {channel.queueDeclare("test_queue", true, false, false, null);channel.basicPublish("", "test_queue", null, "Hello RabbitMQ".getBytes());
    }
    
  4. 消费者接收消息

    try (Connection conn = RabbitmqUtils.getConnection();Channel channel = conn.createChannel()) {channel.basicConsume("test_queue", true, (consumerTag, message) -> {System.out.println("收到消息:" + new String(message.getBody()));}, consumerTag -> {});Thread.sleep(10000); // 保持监听
    }
    

四、关键注意事项

  1. 消息可靠性

    • 开启消息持久化:queueDeclare(..., true, ...)
    • 生产者开启Confirm模式确认消息到达Broker
    • 消费者关闭自动ACK,处理完成后手动确认
  2. 性能优化

    • 单Connection多Channel复用TCP连接
    • 预取数量设置:channel.basicQos(10)
    • 批量消息确认机制
  3. 常见问题处理

    • 消息堆积:增加消费者或设置TTL过期时间
    • 连接失败:检查防火墙是否开放5672端口
    • 权限问题:通过rabbitmqctl创建新用户并授权

五、进阶学习路径

  1. Spring Boot整合
    使用spring-boot-starter-amqp简化配置,通过@RabbitListener注解实现监听

  2. 高级特性实践

    • 延迟队列(需安装插件)
    • 死信队列(DLX)处理失败消息
    • 集群搭建与镜像队列
  3. 监控管理

    • 通过管理界面查看队列深度、消息速率
    • 集成Prometheus+Grafana实现可视化监控

通过以上步骤可快速实现基础消息收发,建议配合官方文档和Web管理界面进行实践验证。若需完整代码示例,可参考网页提供的工具类和示例代码。









以下是快速上手RabbitMQ的步骤指南,结合最新实践整理:

一、环境配置

  1. 安装RabbitMQ

    • Docker快速部署(推荐):
      docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
      
      访问管理界面:http://localhost:15672,默认账号密码guest/guest
    • Linux/Windows安装
      参考官方网页或通过包管理器安装,需提前配置Erlang环境。
  2. 启用管理插件

    rabbitmq-plugins enable rabbitmq_management
    

    提供可视化监控界面。


二、核心概念

  1. 核心组件

    • Producer:消息生产者,发送消息到Exchange。
    • Consumer:消息消费者,从Queue接收消息。
    • Exchange:根据路由规则分发消息到Queue,支持4种类型(direct、topic、fanout、headers)。
    • Queue:存储消息的缓冲区,支持持久化(durable=true)防止数据丢失。
  2. 关键机制

    • 持久化:设置队列和消息的durable属性。
    • 确认机制:消费者手动发送ACK确认消息处理完成。

三、消息发送与接收

  1. 生产者代码示例(Java)

    ConnectionFactory factory = new ConnectionFactory();
    factory.setHost("localhost");
    try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {channel.queueDeclare("hello", false, false, false, null);String message = "Hello World!";channel.basicPublish("", "hello", null, message.getBytes());System.out.println(" [x] Sent '" + message + "'");
    }
    

    引用依赖:com.rabbitmq:amqp-client

  2. 消费者代码示例(Java)

    channel.queueDeclare("hello", false, false, false, null);
    DeliverCallback deliverCallback = (consumerTag, delivery) -> {String message = new String(delivery.getBody(), StandardCharsets.UTF_8);System.out.println(" [x] Received '" + message + "'");
    };
    channel.basicConsume("hello", true, deliverCallback, consumerTag -> { });
    

    支持手动ACK模式确保可靠性。


四、应用场景示例

  1. 异步处理
    用户注册后发送欢迎邮件:

    // 生产者
    rabbitTemplate.convertAndSend("user.register.exchange", "user.register", userDTO);
    // 消费者
    @RabbitListener(queues = "user.register.queue")
    public void handleUserRegister(UserDTO user) {emailService.sendWelcomeEmail(user.getEmail());
    }
    

    引用Spring AMQP简化开发。

  2. 流量削峰
    限制消费者并发数:

    spring:rabbitmq:listener:simple:concurrency: 5max-concurrency: 20
    

    适用于秒杀场景。


五、常见问题解决

  1. 消息丢失

    • 生产者:开启Confirm模式确认消息到达Broker。
    • Broker:设置队列和消息持久化。
    • 消费者:关闭自动ACK,手动确认处理完成。
  2. 队列监控
    通过管理界面查看队列深度、消息速率,或集成Prometheus+Grafana实现告警。


通过以上步骤,可快速搭建RabbitMQ基础环境并实现消息的发送与消费。进阶学习可参考尚硅谷新版教程(B站链接)或官方网页。









以下是RabbitMQ的快速上手指南,结合最新实践整理:

一、环境安装

  1. Docker快速部署(推荐)
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

访问管理界面:http://localhost:15672(默认账号密码guest/guest

  1. Linux系统安装
# 安装Erlang环境(需匹配RabbitMQ版本)
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.11/erlang-23.3.4.11-1.el7.x86_64.rpm
rpm -ivh erlang-23.3.4.11-1.el7.x86_64.rpm# 安装RabbitMQ
rpm -ivh rabbitmq-server-3.9.16-1.el7.noarch.rpm
systemctl enable rabbitmq-server
systemctl start rabbitmq-server

启用管理插件:

rabbitmq-plugins enable rabbitmq_management

二、核心概念

  1. 组件说明
  • Producer:消息生产者(发送至Exchange)
  • Consumer:消息消费者(从Queue订阅)
  • Exchange:路由规则(支持direct/topic/fanout/headers四种类型)
  • Queue:消息存储缓冲区(需设置durable属性实现持久化)
  1. 关键机制
  • 持久化:队列/消息设置durable=true
  • 确认机制:消费者手动ACK确保处理完成
  • TTL:消息/队列过期时间设置

三、Java实战示例

1. 异步发送消息
// 生产者
rabbitTemplate.convertAndSend("exchange", "routingKey", message);// 消费者
@RabbitListener(queues = "queueName")
public void handleMessage(Message message) {// 处理逻辑
}
2. 延迟队列实现
// 定义延迟交换机
@Bean
public CustomExchange delayedExchange() {Map<String, Object> args = new HashMap<>();args.put("x-delayed-type", "direct");return new CustomExchange("delayedExchange", "x-delayed-message", true, false, args);
}// 发送延迟消息
MessageProperties props = new MessageProperties();
props.setDelay(60000); // 60秒延迟
rabbitTemplate.send("delayedExchange", "routingKey", new Message("data".getBytes(), props));

四、监控与管理

  1. 管理界面
  • 查看队列深度、消息速率、连接状态
  • 配置用户权限:rabbitmqctl set_permissions -p /admin ".*" ".*" ".*"
  1. 集成监控
  • Prometheus+Grafana:监控指标包括rabbitmq_queue_messages_ready(待消费消息数)
  • Spring Boot Actuator:暴露/actuator/rabbitmq端点

五、常见问题解决

  1. 消息丢失
  • 生产者:开启Confirm模式
  • Broker:队列/消息持久化
  • 消费者:关闭自动ACK,手动确认
  1. 连接超时
  • 检查防火墙是否放行5672/15672端口
  • 确认Erlang Cookie一致性(集群环境)

通过以上步骤,可快速搭建RabbitMQ基础环境并实现消息的异步处理。进阶学习可参考尚硅谷新版教程(含集群搭建与流式队列)。









以下是RabbitMQ快速上手的关键步骤和核心要点,结合最新技术实践整理而成:

一、环境安装(推荐Docker方式)

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management
  • 5672端口用于AMQP协议通信
  • 15672端口提供Web管理界面(默认账号:guest/guest)
  • 其他安装方式:
    • Windows:choco install rabbitmq
    • Ubuntu:sudo apt-get install rabbitmq-server

二、核心概念速览

  1. 生产者(Producer):发送消息到Exchange
  2. 交换机(Exchange):消息路由中心,支持4种类型:
    • Direct(精准匹配路由键)
    • Topic(通配符匹配)
    • Fanout(广播)
    • Headers(头信息匹配)
  3. 队列(Queue):消息存储缓冲区
  4. 消费者(Consumer):从队列订阅消息
  5. 绑定(Binding):定义Exchange与Queue的路由规则

三、Java快速入门(Spring Boot示例)

  1. 添加依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  1. 生产者代码:
@Autowired
private RabbitTemplate rabbitTemplate;public void sendMessage() {rabbitTemplate.convertAndSend("exchange.demo",  // 交换机名称"routing.key",    // 路由键"Hello RabbitMQ!"// 消息内容);
}
  1. 消费者代码:
@RabbitListener(queues = "queue.demo")
public void receiveMessage(String message) {System.out.println("Received: " + message);
}

四、基础工作模式

  1. 简单队列:单生产者-单消费者
  2. 工作队列:多消费者竞争消费
  3. 发布订阅:Fanout交换机广播消息
  4. 路由模式:Direct交换机精准路由
  5. 主题模式:Topic交换机通配符匹配

五、关键配置建议

  1. 消息持久化
// 队列声明时设置
channel.queueDeclare("queue", true, false, false, null);
// 消息发送时设置
MessageProperties props = new MessageProperties();
props.setDeliveryMode(MessageDeliveryMode.PERSISTENT);
  1. 确认机制
spring:rabbitmq:publisher-confirm-type: correlated # 生产者确认listener:simple:acknowledge-mode: manual     # 消费者手动ACK

六、管理监控

  1. 访问http://localhost:15672查看:
    • 队列深度监控
    • 消息吞吐量统计
    • 连接/通道状态
  2. 集成Spring Boot Actuator:
management:endpoints:web:exposure:include: rabbit

七、常见问题解决

  1. 消息丢失

    • 启用生产者确认模式
    • 队列/消息持久化
    • 消费者手动ACK
  2. 消息堆积

    • 增加消费者并发数
    • 设置消息TTL过期时间
    • 使用惰性队列(Lazy Queue)

提示:建议从简单队列模式开始实践,逐步过渡到主题路由等复杂场景。对于延迟消息需求,需要安装rabbitmq_delayed_message_exchange插件。开发环境推荐使用Docker部署,生产环境需配置集群和高可用方案。









要快速上手RabbitMQ,可按以下步骤操作:

  1. 核心概念

    • 生产者(Producer):发送消息的程序
    • 消费者(Consumer):接收消息的程序
    • 队列(Queue):存储消息的缓冲区
    • 交换机(Exchange):路由消息到队列
    • 绑定(Binding):连接交换机和队列的规则
  2. 安装

    # 使用Docker快速启动
    docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
    

    管理界面:http://localhost:15672(账号/密码:guest/guest)

  3. Python示例(使用pika库)

    pip install pika
    

    生产者代码

    import pika
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()
    channel.queue_declare(queue='hello')
    channel.basic_publish(exchange='', routing_key='hello', body='Hello RabbitMQ!')
    connection.close()
    

    消费者代码

    import pika
    def callback(ch, method, properties, body):print(f"收到消息: {body.decode()}")connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()
    channel.queue_declare(queue='hello')
    channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
    channel.start_consuming()
    
  4. 常用操作

    • 创建交换机:channel.exchange_declare(exchange='logs', exchange_type='fanout')
    • 绑定队列:channel.queue_bind(exchange='logs', queue=queue_name)
    • 交换机类型:direct(精确匹配)、fanout(广播)、topic(模式匹配)
  5. 典型场景

    • 任务队列:分发耗时任务
    • 发布/订阅:广播系统事件
    • RPC调用:远程过程调用

建议从简单队列开始实践,逐步尝试不同交换机类型,通过管理界面观察消息流动状态。









以下是最简版RabbitMQ快速上手指南:

  1. 启动服务(Docker版)
docker run -d -p 5672:5672 -p 15672:15672 --name my_rabbitmq rabbitmq:management
  1. 登录管理台
    访问 http://localhost:15672
    账号:guest / 密码:guest

  2. 生产者代码(发送消息)

import pika
conn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = conn.channel()
channel.queue_declare(queue='my_queue')
channel.basic_publish(exchange='', routing_key='my_queue', body='Hello!')
conn.close()
  1. 消费者代码(接收消息)
import pika
def receive(ch, method, properties, body):print("收到:", body.decode())conn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = conn.channel()
channel.basic_consume(queue='my_queue', on_message_callback=receive, auto_ack=True)
channel.start_consuming()
  1. 验证流程
  • 先运行消费者程序(持续监听)
  • 再运行生产者程序
  • 观察消费者终端输出和管理界面的队列状态

附:核心概念速记

  • 消息通过交换机路由到队列
  • 三种常用交换机:
    ▶ direct:精准匹配路由键
    ▶ fanout:广播到所有绑定队列
    ▶ topic:模式匹配路由键(如:*.error)

先完成这个基础流程,后续再深入学习消息持久化、ACK机制等高级特性。









以下是 RabbitMQ 的快速入门指南,帮助你快速掌握基本用法:


1. 核心概念

  • Producer:消息生产者,发送消息到 RabbitMQ
  • Consumer:消息消费者,从队列接收消息
  • Exchange:消息路由组件,决定消息如何分发到队列
  • Queue:消息队列,存储待消费的消息
  • Binding:交换机和队列之间的绑定规则

2. 安装 RabbitMQ

使用 Docker(推荐):
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
  • 访问管理界面:http://localhost:15672 (默认账号: guest/guest)
Ubuntu 安装:
sudo apt-get install rabbitmq-server
sudo systemctl start rabbitmq-server

3. 快速示例(Python)

安装依赖:
pip install pika
生产者(发送消息):
import pika# 连接 RabbitMQ
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()# 创建队列(如果不存在)
channel.queue_declare(queue='hello')# 发送消息
channel.basic_publish(exchange='',routing_key='hello',body='Hello RabbitMQ!')
print(" [x] Sent 'Hello RabbitMQ!'")connection.close()
消费者(接收消息):
import pikadef callback(ch, method, properties, body):print(f" [x] Received {body}")connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()channel.queue_declare(queue='hello')# 监听队列
channel.basic_consume(queue='hello',auto_ack=True,on_message_callback=callback)print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

4. 常用工作模式

1. Hello World(简单队列)
  • 一个生产者 → 一个队列 → 一个消费者
2. Work Queue(工作队列)
  • 一个生产者 → 一个队列 → 多个消费者(竞争消费)
  • 使用 channel.basic_qos(prefetch_count=1) 实现公平分发

5. 常见问题

  1. 连接失败:检查 RabbitMQ 服务是否运行,端口 5672 是否开放
  2. 权限问题:检查用户名/密码(默认 guest/guest
  3. 消息未消费:确认消费者是否正确绑定队列,auto_ack 是否设置为 True

6. 进阶学习

  • 交换器类型:Direct、Fanout、Topic、Headers
  • 消息确认机制:手动 ACK(auto_ack=False + ch.basic_ack()
  • 持久化:队列和消息的持久化设置

资源推荐

  • 官方文档:https://www.rabbitmq.com/documentation.html
  • RabbitMQ in Action(书籍)
  • 管理界面:查看队列状态、消息统计等实时信息

通过以上步骤,你可以在 10 分钟内完成 RabbitMQ 的初体验!后续可深入探索不同消息模式的高级用法。








































相关文章:

如何快速上手RabbitMQ 笔记250304

如何快速上手RabbitMQ 要快速上手 RabbitMQ&#xff0c;可以按照以下步骤进行&#xff0c;从安装到基本使用逐步掌握核心概念和操作&#xff1a; 1. 理解核心概念 Producer&#xff08;生产者&#xff09;&#xff1a;发送消息的程序。Consumer&#xff08;消费者&#xff09…...

PPT小黑第26套

对应大猫28 层次级别是错的&#xff0c;看着是十页&#xff0c;导入ppt之后四十多页 选中所有 红色蓝色黑色 文本选择标题&#xff1a;选择 -格式相似文本&#xff08;检查有没有漏选 漏选的话 按住ctrl 点下一个&#xff09; 要求新建幻灯片中不包含原素材中的任何格式&…...

甘特图开发代码(测试版)

场景&#xff1a;要实现的功能就是单行数据能左右拖动。 流程五个&#xff1a;ABCDE。&#xff08;对应&#xff1a;Charter开发、概念和计划、初样开发、正样开发、验证&#xff09; 1、A有开始时间&#xff0c;结束时间。B的开始时间必须是A的结束时间&#xff08;相等或者…...

鸿蒙与DeepSeek深度整合:构建下一代智能操作系统生态

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/north 目录 技术融合背景与价值鸿蒙分布式架构解析DeepSeek技术体系剖析核心整合架构设计智能调度系统实现…...

Docker Desktop常见问题记录

1.docker pull报错&#xff0c;无法连接https://registry-1.docker.io/v2/ 报错信息如下&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection(Client.Timeout exceeded …...

Qt 的 Lambda 捕获局部变量导致 UI 更新异常的分析与解决

1. 问题描述 在 Qt 开发中,我们通常会使用 QTimer 进行周期性 UI 更新。例如,下面的代码用于在检测游戏窗口时,在 UI 界面上显示动态变化的“正在检测游戏窗口...”的文本,每 300 毫秒更新一次。 void MainWindow::detectAndPopulateGameList() {ui->game_record_stac…...

RAGflow采用docker-compose-continuous方式pull,把服务器充满了

采用docker-compose-continuous在后台下载&#xff0c;导致服务器被充满。 原因分析&#xff1a; 如果网络不稳定&#xff0c;可能导致下载任务异常中断&#xff0c;而 systemd 服务会不断重启并重新下载&#xff0c;从而占用大量空间。如果网络问题无法解决&#xff0c;可以…...

【第12节】C++设计模式(结构型模式)-Proxy(代理)模式

一、问题背景 使用 Proxy 模式优化对象访问 在某些情况下&#xff0c;直接访问对象可能会导致性能问题或安全性问题。Proxy 模式&#xff08;代理模式&#xff09;通过引入一个代理对象来控制对原始对象的访问&#xff0c;从而解决这些问题。以下是几种典型的应用场景&#xf…...

【C++】vector(上):vector的常用接口介绍

文章目录 前言一、vector的介绍二、vector的常用接口介绍1.vector类对象的常见构造2.vector iterator 的使用3.vector类对象的容量操作3.1 size、capacity 和 empty的使用3.2 reserve的使用3.3 resize的使用 4.vector类对象的访问&#xff08;包含data&#xff1a;返回底层数组…...

【详细讲解在STM32的UART通信中使用DMA机制】

详细讲解在STM32的UART通信中使用DMA机制 目录 详细讲解在STM32的UART通信中使用DMA机制一、DMA机制概述二、DMA在UART中的作用三、DMA的配置步骤四、UART初始化与DMA结合五、DMA传输的中断处理六、DMA与中断的结合使用七、注意事项与常见问题八、代码示例九、总结 一、DMA机制…...

极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

快速生成viso流程图图片形式

我们在写详细设计文档的过程中总会不可避免的涉及到时序图或者流程图的绘制&#xff0c;viso这个软件大部分技术人员都会使用&#xff0c;但是想要画的好看&#xff0c;画的科学还是比较难的&#xff0c;现在我总结一套比较好的方法可以生成好看科学的viso图(图片格式)。主要思…...

设备管理系统功能与.NET+VUE(IVIEW)技术实现

在现代工业和商业环境中&#xff0c;设备管理系统&#xff08;Equipment Management System&#xff0c;简称EMS&#xff09;是确保设备高效运行和维护的关键工具。本文采用多租户设计的设备管理系统&#xff0c;基于.NET后端和VUE前端&#xff08;使用IVIEW UI框架&#xff09…...

《深度学习实战》第11集:AI大模型压缩与加速

深度学习实战 | 第11集&#xff1a;AI大模型压缩与加速 在深度学习领域&#xff0c;随着模型规模的不断增大&#xff0c;模型的推理速度和部署效率成为实际应用中的关键挑战。本篇博客将带你深入了解模型压缩与加速的核心技术&#xff0c;并通过一个实战项目展示如何使用知识蒸…...

【大模型安全】大模型的技术风险

【大模型安全】大模型的技术风险 1.DDoS攻击2.常见的传统网络攻击方式3.恶意意图的识别4.AI生成虚假信息传播5.利用AI进行黑客攻击6.模型对抗攻击7.后门攻击8.Prompt攻击9.数据投毒攻击10.模型窃取攻击11.数据窃取攻击 1.DDoS攻击 2023年11月9日凌晨&#xff0c;OpenAI在官网公…...

git命令学习记录

1. git reset 参数说明 git reset 是用来回退版本的&#xff0c;它可以添加三个参数&#xff0c;常用的使用格式是这样的&#xff1a;git reset [--hard | --soft | --mixed] 版本号 一般使用git修改文件并提交需要三步&#xff0c;第一步在文本编辑器中编辑文件&#xff0c;也…...

Gartner:数据安全平台DSP提升数据流转及使用安全

2025 年 1 月 7 日&#xff0c;Gartner 发布“China Context&#xff1a;Market Guide for Data Security Platforms”&#xff08;《数据安全平台市场指南——中国篇》&#xff0c;以下简称指南&#xff09;&#xff0c;报告主要聚焦中国数据安全平台&#xff08;Data Securit…...

结构型模式---享元模式

概念 享元模式是一种结构型设计模式&#xff0c;他摒弃了在每个对象中保存所有数据的方式&#xff0c;通过共享多个对象所共有的相同状态&#xff0c;让你能在有限的内存容量中载入更多对象。享元模式将原始类中的数据分为内在状态数据和外在状态数据。 内在状态&#xff1a;就…...

一学就会:A*算法详细介绍(Python)

&#x1f4e2;本篇文章是博主人工智能学习以及算法研究时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在&am…...

【Elasticsearch】Elasticsearch 中使用 HDFS 存储快照

在 Elasticsearch 中使用 HDFS 存储快照的步骤如下&#xff1a; 1.安装 HDFS 插件 要使用 HDFS 存储 Elasticsearch 的索引快照&#xff0c;需要在 Elasticsearch 集群的所有节点上安装 HDFS 插件。 • 在线安装&#xff1a;适用于网络环境良好的场景&#xff0c;执行以下命…...

【每日十题系列】前端面试高频题目

以下是作为前端面试官常用的10道手撕代码题目&#xff0c;涵盖JavaScript核心、CSS、算法及框架原理&#xff0c;结合高频考点与实际开发场景设计&#xff1a; 1. 手写防抖&#xff08;debounce&#xff09;与节流&#xff08;throttle&#xff09; 要求&#xff1a;实现防抖函…...

Kafka 消息 0 丢失的最佳实践

文章目录 Kafka 消息 0 丢失的最佳实践生产者端的最佳实践使用带有回调的 producer.send(msg, callback) 方法设置 acks all设置 retries 为一个较大的值启用幂等性与事务&#xff08;Kafka 0.11&#xff09;正确关闭生产者与 flush() 方法 Broker 端的最佳实践设置 unclean.l…...

学网络安全报班可靠吗?

在当今社会&#xff0c;网络安全已经成为我们工作和生活中不可忽视的重要部分&#xff0c;而且市场上各大企业对网络安全人才的需求量非常之大&#xff0c;因此网络安全培训班应运而生&#xff0c;那么学网络安全报培训班靠谱吗?这是很多小伙伴都关心的问题&#xff0c;我们来…...

LeetCode 1745.分割回文串 IV:动态规划(用III或II能直接秒)

【LetMeFly】1745.分割回文串 IV&#xff1a;动态规划&#xff08;用III或II能直接秒&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning-iv/ 给你一个字符串 s &#xff0c;如果可以将它分割成三个 非空 回文子字符串&#xff0c;…...

4 Redis4 List命令类型讲解

Redis 列表&#xff08;List&#xff09;命令详解 1. Redis 列表&#xff08;List&#xff09;简介 Redis 列表&#xff08;List&#xff09;是一个简单的字符串列表&#xff0c;按照插入顺序排序。它可以用作 栈&#xff08;Stack&#xff09; 和 队列&#xff08;Queue&…...

鬼泣:项目前置设置杂项

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 插件niagara ui render&#xff1a;在 UI 中渲染 Niagara 特效skeletal editor&#xff1a;编辑骨骼&#xff0c;调整骨骼动画motion warping&#xff1a;根据目标自动调整角色动画。animation warping&#xff1a;…...

MyBatis-Plus 条件构造器的使用(左匹配查询)

在上一篇文章中&#xff0c;我们已经介绍了 MyBatis-Plus 条件构造器&#xff0c;包括 QueryWrapper 和 UpdateWrapper 的基本使用方法、常见查询条件&#xff08;如等于、不等于、大于、小于&#xff09;以及如何使用 Lambda 表达式来构建动态查询和更新条件。 在本文中&…...

#define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg))

这个宏 #define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg)) 是用来在 C++ 中标记某些函数、变量或者代码元素为已弃用(deprecated)的,并附带一个自定义的弃用消息。 具体解释: __declspec(deprecated(msg)): __declspec 是 Microsoft Visual C++ (MSVC) 的扩展…...

Vue输入框获取焦点

1. 元素未渲染完成 如果你在组件挂载或数据更新后立即调用 focus()&#xff0c;可能元素还未渲染到 DOM 中&#xff0c;导致 focus() 失效。 解决方法&#xff1a;确保在元素渲染完成后再调用 focus()。可以使用 nextTick 确保 DOM 更新完成。 2. ref 未正确绑定 确保 ref 正确…...

辛格迪客户案例 | 深圳善康医药科技GMP培训管理(TMS)项目

01 善康医药&#xff1a;创新药领域的探索者 深圳善康医药科技股份有限公司自2017年创立以来&#xff0c;便扎根于创新药研发领域&#xff0c;专注于成瘾治疗药物的研究、生产与销售。公司坐落于深圳&#xff0c;凭借自身独特的技术优势与研发实力&#xff0c;在行业内逐渐崭露…...

迷你世界脚本出生点接口:Spawnport

出生点接口&#xff1a;Spawnport 彼得兔 更新时间: 2023-04-26 10:19:56 具体函数名及描述如下: 序号 函数名 函数描述 1 getSpawnPoint(...) 获取默认出生点 2 setSpawnPoint(...) 设置出生点位置 3 getChunkValidSpawnPos(...) 获取区块有效刷新点…...

Android车机DIY开发之软件篇(二十)立创泰山派android编译

准备工作 sudo apt-get update sudo apt-get install git -y sudo apt install repo -ysudo apt-get install python2.7sudo apt-get install python3sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /u…...

MDM 如何彻底改变医疗设备的远程管理

在现代医疗行业迅速发展的格局中&#xff0c;医院和诊所越来越依赖诸如医疗平板和移动工作站等移动设备。这些设备在提高工作效率和提供卓越的患者护理方面发挥着关键作用。然而&#xff0c;随着它们的广泛使用&#xff0c;也带来了一系列挑战&#xff0c;例如在不同地点确保数…...

Libgdx游戏开发系列教程(6)——游戏暂停

目录 最初方案1 优化方案2 - 事件拦截器监听按键 优化方案3 - 暂停状态重绘 优化方案4 优化方案5 补充 - 监听android手机的返回键 暂停也是一个游戏的必要功能了,本文研究了Libgdx实现游戏暂停 例子以桌面端游戏实现讲解为主,至于移动端,可能之后会进行补充... 本文最…...

车载测试:智能座舱测试中多屏联动与语音交互的挑战

智能座舱作为汽车智能化发展的核心&#xff0c;集成了多屏联动和语音交互功能&#xff0c;为驾驶员和乘客提供更便捷的体验。然而&#xff0c;这些功能的测试面临诸多挑战&#xff0c;包括多屏同步性、噪声干扰和复杂场景的处理。本文将详细分析这些挑战&#xff0c;探讨测试方…...

【踩坑随笔】`npm list axios echarts`查看npm依赖包报错

npm list axios echarts查看npm依赖包出现以下报错&#xff0c;原因就是包的版本匹配问题&#xff0c;按照提示降axios版本或者自己升找合适的got版本&#xff0c;我这里是选择了降版本。本文记录仅做解决思路参考不一定适配大家的实际情况。 weed-detection-system1.0.0 E:\P…...

用于管理 Elasticsearch Serverless 项目的 AI Agent

作者&#xff1a;来自 Elastic Fram Souza 由自然语言驱动的 AI 代理&#xff0c;可轻松管理 Elasticsearch Serverless 项目 - 支持项目创建、删除和状态检查。 这个小型命令行工具让你可以用简单的英语管理你的无服务器 Elasticsearch 项目。它通过AI&#xff08;这里是 Ope…...

【文生图】windows 部署stable-diffusion-webui

windows 部署stable-diffusion-webui AUTOMATIC1111 stable-diffusion-webui Detailed feature showcase with images: 带图片的详细功能展示: Original txt2img and img2img modes 原始的 txt2img 和 img2img 模式 One click install and run script (but you still must i…...

STaR(Self-Taught Reasoner)方法:让语言模型自学推理能力(代码实现)

STaR&#xff08;Self-Taught Reasoner&#xff09;方法&#xff1a;让语言模型自学推理能力 在大型语言模型&#xff08;LLM&#xff09;的推理能力优化中&#xff0c;STaR&#xff08;Self-Taught Reasoner&#xff09; 是一种引人注目的技术&#xff0c;属于“修改提议分布…...

十大经典排序算法简介

一 概述 本文对十大经典排序算法做简要的总结(按常用分类方式排列),包含核心思想、时间/空间复杂度及特点。 二、比较类排序 1. 冒泡排序 (BUBBLE SORT) 思想:重复交换相邻逆序元素,像气泡上浮 复杂度: 时间:O(n^2)(最好情况O(n)) 空间:O(1) 特点:简单但效率低,稳…...

5.训练策略:优化深度学习训练过程的实践指南——大模型开发深度学习理论基础

在实际开发中&#xff0c;训练策略对神经网络的表现起着至关重要的作用。通过合理的训练策略&#xff0c;我们可以有效避免过拟合和欠拟合&#xff0c;加速模型收敛&#xff0c;并提升最终性能。本文将从实际开发角度详细介绍几种关键的训练策略&#xff0c;包括 Early Stoppin…...

道可云人工智能每日资讯|《奇遇三星堆》VR沉浸探索展(淮安站)开展

道可云元宇宙每日简报&#xff08;2025年3月5日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 《奇遇三星堆》VR沉浸探索展&#xff08;淮安站&#xff09;开展 近日&#xff0c;《奇遇三星堆》VR沉浸探索展&#xff08;淮安站&#xff09;开展。该展将三星堆文…...

Camera相关配置

一、 Purpose目的 通常&#xff0c; 感知模块使用雷达点云和相机图像来对物体进行检测和分类&#xff0c;感知数据分别来自雷达和相机&#xff0c;就传感器数据融合准确性&#xff0c;我们需要雷达和相机同一时间捕捉到同一物体(时间间隔尽可能短)&#xff0c;否则一个真实的物…...

PHP Error处理指南

PHP Error处理指南 引言 在PHP开发过程中,错误处理是一个至关重要的环节。正确的错误处理不仅能够提高代码的健壮性,还能提升用户体验。本文将详细介绍PHP中常见的错误类型、错误处理机制以及最佳实践,帮助开发者更好地应对和处理PHP错误。 PHP错误类型 在PHP中,错误主…...

【Pandas】pandas Series argmax

Pandas2.2 Series Computations descriptive stats 方法描述Series.argsort([axis, kind, order, stable])用于返回 Series 中元素排序后的索引位置的方法Series.argmin([axis, skipna])用于返回 Series 中最小值索引位置的方法Series.argmax([axis, skipna])用于返回 Series…...

Gitlab配置personal access token

1.点击左上角个人账号 -> Preferences 2. 点击左边栏 Access Tokens 3. 点击Add new token &#xff0c;输入token名称&#xff0c;勾选权限&#xff08;注意截至日期 “Expiration date” 可不填&#xff09; 4. 创建成功后&#xff0c;显示token信息&#xff0c;复制到本地…...

【MySQL、Oracle、SQLserver、postgresql】查询多条数据合并成一行

四大数据库多行合并为单行&#xff1a;函数详解与对比 一、MySQL**GROUP_CONCAT()** 函数说明&#xff1a;语法结构&#xff1a;参数解释&#xff1a;示例&#xff1a;注意事项&#xff1a; 二、Oracle**LISTAGG()** 函数说明&#xff1a;语法结构&#xff1a;参数解释&#xf…...

人机交互进化论:解码智能手机81种交互方式背后的用户体验革命

人机交互进化论&#xff1a;解码智能手机81种交互方式背后的用户体验革命 2023年艾瑞咨询报告显示&#xff1a;中国智能手机用户日均触屏交互超2500次&#xff0c;解锁屏幕达76次/天。在这看似简单的点击与滑动背后&#xff0c;隐藏着一场持续演进的人机交互革命。本文将深度解…...

OCPP扩展机制与自定义功能开发:协议灵活性设计与实践 - 慧知开源充电桩平台

OCPP扩展机制与自定义功能开发&#xff1a;协议灵活性设计与实践 引言 OCPP作为开放协议&#xff0c;其核心价值在于平衡标准化与可扩展性。面对不同充电桩厂商的硬件差异、区域能源政策及定制化业务需求&#xff0c;OCPP通过**扩展点&#xff08;Extension Points&#xff09…...

网络编程之TCP协议

传输层协议&#xff1a;UDP和TCP的区别 UDP&#xff1a;用户数据报协议 1.面向数据报 2.无连接 3.不安全&#xff0c;不可靠(尽最大努力交付) TCP:传输控制协议 1.面向数据流(流式套接字) 2.建立连接 3.安全可靠的传输协议 TCP的传输过程 三次握手&#xff1a;TCP建立…...