如何快速上手RabbitMQ 笔记250304

news2025/3/6 2:26:16

如何快速上手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 pika

def 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 + "'");
    // 手动发送 ACK
    channel.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服务器IP
        factory.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服务器IP
        factory.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 pika

connection = 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 pika
    
    connection = 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 pika
    
    def 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 pika

def 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 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}")

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 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()

(3) 消费者代码

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',
    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: 5
            max-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 pika

def 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 的初体验!后续可深入探索不同消息模式的高级用法。








































本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2310300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

run方法执行过程分析

文章目录 run方法核心流程SpringApplicationRunListener监听器监听器的配置与加载SpringApplicationRunListener源码解析实现类EventPublishingRunListener 初始化ApplicationArguments初始化ConfigurableEnvironment获取或创建环境配置环境 打印BannerSpring应用上下文的创建S…

面试-----每日一题

一、字节一面&#xff08;操作系统&#xff09; 什么是死锁&#xff1f;如何处理死锁问题&#xff1f; 死锁是指两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通讯而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。…

CentOS 7中安装Dify

Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等&#xff0c;让您可以快速从原型到生产。尤其是我们本地部署DeepSeek等大模型时&#xff0c;会需要用到Dify来帮我们快捷的开发和应用。 大家可以参考学习它的中…

qt-C++笔记之Linux下Qt环境变量设置及与QtCreator的关系

qt-C++笔记之Linux下Qt环境变量设置及与QtCreator的关系 code review! 文章目录 qt-C++笔记之Linux下Qt环境变量设置及与QtCreator的关系一.Qt关键的环境变量1.1.PATH1.2.LD_LIBRARY_PATH1.3.QML2_IMPORT_PATH二.若不手动设置这三个环境变量2.1.PATH 的默认路径2.2.LD_LIBRARY_…

Flutter 学习之旅 之 flutter 使用 carousel_slider 简单实现轮播图效果

Flutter 学习之旅 之 flutter 使用 carousel_slider 简单实现轮播图效果 目录 Flutter 学习之旅 之 flutter 使用 carousel_slider 简单实现轮播图效果 一、简单介绍 二、简单介绍 carousel_slider 三、安装 carousel_slider 四、简单案例实现 五、关键代码 一、简单介…

【JavaScript—前端快速入门】JavaScript 对象与函数

JavaScript 对象 1. JavaScripe 数组 创建数组的方式 使用 new 关键字创建 使用字面量方式创建 [常用] 注意&#xff0c;JavaScipt 不要求数组元素类型都相同&#xff1b; 数组操作 读&#xff1a;使用下标的方式访问数组元素&#xff08;从0开始) 保存代码&#xff0c;打开…

java中的局部变量

文章目录 一、定义二、作用域和作用位置三、声明周期和初始化四、内存管理五、Java内存区域划分六、例子 一、定义 在java中&#xff0c;局部变量指在方法、构造方法、代码块&#xff08;如{}包裹的语句块&#xff09;内部声明的变量 class work {{int a 10;}public work() {i…

(IDE接入DeepSeek)简单了解DeepSeek接入辅助开发与本地部署建议

重点&#xff1a;IDE接入DeepSeek是否收费 收费&#xff01; 本文章主要是为了给小白避雷&#xff0c;目前很多文章告诉大家怎么接入DeepSeek&#xff0c;但是并未告知大家是否收费。如果是想白嫖的&#xff0c;就可以不用去接入了。 一、引言 最近爆火的AI人工智能工具DeepSe…

【算法学习之路】5.贪心算法

贪心算法 前言一.什么是贪心算法二.例题1.合并果子2.跳跳&#xff01;3. 老鼠和奶酪 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套完整的算法体系&#xff0c;以及大量的各个难度的题目&#xff0c;目前算法也写了几篇&#xff0c;题单正在更新&#xf…

0x03 http协议和分层架构

HTTP协议 简介 Hyper Text Transfer Protocol&#xff0c;超文本传输协议&#xff0c;规定了浏览器和服务器之间数据传输的规则 http协议基于TCP协议&#xff1a;面向连接&#xff0c;安全基于请求-响应模型&#xff1a;一次请求对应一次响应HTTP协议是无状态的协议&#xff…

智能合约安全指南 [特殊字符]️

智能合约安全指南 &#x1f6e1;️ 1. 安全基础 1.1 常见漏洞类型 重入攻击整数溢出权限控制缺陷随机数漏洞前后运行攻击签名重放 1.2 安全开发原则 最小权限原则检查-生效-交互模式状态机安全失败保护机制 2. 重入攻击防护 2.1 基本防护模式 contract ReentrancyGuarde…

【Python项目】基于Python的书籍售卖系统

【Python项目】基于Python的书籍售卖系统 技术简介&#xff1a;采用Python技术、MYSQL数据库等实现。 系统简介&#xff1a;书籍售卖系统是一个基于B/S结构的在线图书销售平台&#xff0c;主要分为前台和后台两部分。前台系统功能模块分为&#xff08;1&#xff09;用户中心模…

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)

【Linux】【网络】UDP打洞–>不同子网下的客户端和服务器通信&#xff08;未成功版&#xff09; 上次说基于UDP的打洞程序改了五版一直没有成功&#xff0c;要写一下问题所在&#xff0c;但是我后续又查询了一些资料&#xff0c;成功实现了&#xff0c;这次先写一下未成功的…

(1)udp双向通信(2)udp实现文件复制(3)udp实现聊天室

一.udp双向通信 1.fork进程实现双向通信 【1】head.h 【2】client客户端 &#xff08;1&#xff09;父进程从键盘获取字符串 &#xff08;2&#xff09;输入quit&#xff0c;发送结束子进程信号 &#xff08;3&#xff09;exit退出父进程 &#xff08;1&#xff09;子进程接受…

c高级第五天

1> 在终端提示输入一个成绩&#xff0c;通过shell判断该成绩的等级 [90,100] : A [80, 90) : B [70, 80) : C [60, 70) : D [0, 60) : 不及格 #!/bin/bash# 提示用户输入成绩 read -p "请输入成绩&#xff08;0-100&#xff09;&#xff1a;" score# 判断成…

【JQuery—前端快速入门】JQuery 操作元素

JQuery 操作元素 1. 获取/修改元素内容 三个简单的获取元素的方法&#xff1a; 这三个方法即可以获取元素的内容&#xff0c;又可以设置元素的内容. 有参数时&#xff0c;就进行元素的值设置&#xff0c;没有参数时&#xff0c;就进行元素内容的获取. 接下来&#xff0c;我们需…

标签的ref属性 vue中为什么不用id标记标签

标签的ref属性 vue中为什么不用id标记标签 假设有一对父子组件&#xff0c;如果父组件和子组件中存在id相同的标签&#xff0c;会产生冲突。通过id获取标签会获取到先加载那个标签。 标签的ref属性的用法 在父组件App中&#xff0c;引入了子组件Person。 并使用ref标记了Pe…

7.1.1 计算机网络的组成

文章目录 物理组成功能组成工作方式完整导图 物理组成 计算机网络是将分布在不同地域的计算机组织成系统&#xff0c;便于相互之间资源共享、传递信息。 计算机网络的物理组成包括硬件和软件。硬件中包含主机、前端处理器、连接设备、通信线路。软件中包含协议和应用软件。 功…

IDEA 接入 Deepseek

在本篇文章中&#xff0c;我们将详细介绍如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek&#xff0c;让你的 AI 编程助手更智能&#xff0c;提高开发效率。 一、前置准备 在开始之前&#xff0c;请确保你已经具备以下条件&#xff1a; 安装了 JetBrains IDEA&…

mapbox基础,使用点类型geojson加载symbol符号图层,用于标注文字

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️symbol符号图层样式二、🍀使用点类型…