RabbitMQ: 全面安装与运维指南之从基础部署到高级配置

安装 RabbitMQ 服务 ERTS 版本:Erlang Runtime System (ERTS) 是 Erlang 运行时的核心部分,它负责执行 Erlang 程序、垃圾回收、进程调度等。Erlang/OTP 版本:指的是整个 Erlang 系统的版本,包括 Erlang 语言本身、OTP (Open Telecom Platform) 的标准库、工具和一些运行时支持。在 Erlang 中,erts-15.x.x 是 Erlang/OTP 27 的一部分,这并不意味着出现了问题,而是版本控制的方式。 阅读详情

RabbitMQ 安装指南(Windows/macOS/Linux)


1 ) 核心注意事项:

  1. 跨平台支持:
    RabbitMQ 基于 Erlang/OTP 开发,支持 Windows、Linux、macOS 系统,无需为开发环境额外配置 Linux 虚拟机或服务器。
  2. 生产环境规范:
    生产环境推荐使用 Linux 系统,Windows/macOS 仅适用于开发调试。
  3. 官方渠道下载:
    必须通过官网下载安装包,避免后门风险(例:Xcode 编译器木马事件导致 iOS 应用安全漏洞)。

2 ) 安装步骤:

  1. 安装 Erlang/OTP(依赖环境):

    • 访问 Erlang 官网 下载对应系统版本(如 Windows 64 位安装包)。
    • 安装时勾选 Associations(文件关联)和 Erlang Documentation(文档)。
  2. 安装 RabbitMQ:

    • 官网下载地址:rabbitmq.com/download.html
    • Windows 选择 Installer for Windows Systems(推荐),按提示完成安装。
    • 验证服务:
      • 任务管理器 → 服务列表 → 检查 RabbitMQ 状态为“运行中”(开机自启)。
  3. macOS 安装:

    brew update
    brew install rabbitmq  # 自动安装 Erlang 依赖 
    
  4. Linux 开发环境安装(Docker 推荐):

    docker run -d --name rabbitmq \
      -p 5672:5672 -p 15672:15672 \
      rabbitmq:3-management  # 包含管理插件
    
    • 5672:AMQP 协议端口(消息通信)
    • 15672:Web 管理控制台端口

RabbitMQ 管理控制台详解


1 ) 启用管理插件:

进入 RabbitMQ 安装目录的 sbin 文件夹
rabbitmq-plugins enable rabbitmq_management
  • 访问 http://localhost:15672,默认账号/密码:guest/guest。

2 ) 核心功能模块:

模块功能说明监控重点
Overview集群概览:消息积压、吞吐率、资源使用Ready(待消费)、Unacked(未确认)消息数
Connections物理 TCP 连接(生产者/消费者与 Broker 的链路)异常连接数波动(预示泄露或频繁重启)
Exchanges交换机管理(Direct/Topic/Fanout 路由核心)绑定关系、持久化配置
Queues队列管理(消息存储实体)消息堆积趋势、消费者负载
Admin用户/虚拟机/策略配置权限控制、TPS 限流
  1. Overview(概览):

    • 消息状态:
      • Ready:待消费消息
      • Unacked:已取走未确认消息
      • Total:前两者之和
    • 系统监控:
      • 消息速率(Message Rates)、磁盘 I/O、连接数(Connections)、通道数(Channels)。
  2. Exchanges(交换机):

    • 内置交换机:
      • amq.direct:路由键(Routing Key)需精确匹配队列名。
    • 自定义交换机(例:创建 drink 交换机):
      • 类型:direct/fanout/topic
      • 持久化(Durability):重启后保留配置
      • 自动删除(Auto-delete):无绑定队列时自动移除
  3. Queues(队列):

  • 创建队列(例:coffee):
    • 绑定交换机:通过 Bindings 关联交换机与路由键(如 coffee_key)。
  • 手动收发消息:
    • 交换机发送 → 队列接收 → Get Messages 查看消息内容。
  • 绑定 drink 交换机到 coffee 队列:
    rabbitmqctl bind_queue drink coffee coffee_rk 
    
  • 手动发送/消费消息:
    • 在交换机页发送消息(RoutingKey=coffee, Payload=I want a drink)
    • 在队列页通过 Get Messages 拉取验证。
  1. Admin(管理):
    • 用户管理:

      • 添加管理员用户:admin(角色选 Administrator)
    • 管理用户

      # 创建管理员用户 
      rabbitmqctl add_user admin adminpassword 
      rabbitmqctl set_user_tags admin administrator 
      rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
      
    • 虚拟主机(Virtual Hosts):

      • 不同业务使用独立 vHost 实现资源隔离
      • 隔离不同业务(例:创建 /order 虚拟主机)
    • 资源限制:

      • 最大连接数(Max Connections)、最大队列数(Max Queues),防止过载
      • max-connections:限制并发连接数(生产环境建议 ≤500)
      • max-queues:限制队列数量(避免内存溢出)

3 ) 交换机与队列实操演示

  1. 创建 Direct 交换机

    • 名称:drink,类型:Direct,持久化:Durability(重启保留),AutoDelete:No
  2. 绑定队列到交换机

    • 新建队列:coffee(持久化)
    • 绑定规则:交换机 drink → 路由键 coffee → 队列 coffee
  3. 消息路由测试

    • 在 drink 交换机发送消息:
      • Routing Key: coffee
      • Payload: "I want a drink"
    • 结果:消息在 coffee 队列的 Ready 状态计数 +1

4 ) Admin 高级配置

  1. 用户管理

    • 新建管理员用户:admin(Role 选 Administrator)
    • 权限分配:虚拟主机(Virtual Host)默认 / ,需显式授权(Set Permission)。
  2. 资源限额

    • Limits 页签配置:
      • max_connections=500:防止连接风暴
      • max_queues=200:避免队列无限创建

管控台核心价值:实时诊断消息路由链路,支持手动干预测试,显著提升开发调试效率。

命令行工具(rabbitmqctl)高级运维


1 ) 使用场景:

  • 生产环境端口受限时
  • 自动化脚本部署

核心命令口诀:

# 1. 查看资源:list [资源类型]
rabbitmqctl list_queues        # 查看队列 
rabbitmqctl list_exchanges     # 查看交换机
 
# 2. 清理资源:purge [资源类型]
rabbitmqctl purge_queue my_queue  # 清空队列消息
 
# 3. 删除资源:delete [资源类型]
rabbitmqctl delete_queue my_queue # 删除队列
 
# 4. 万能帮助:--help
rabbitmqctl --help

2 ) 常用操作示例:

创建用户
rabbitmqctl add_user admin mypassword
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
 
集群管理
rabbitmqctl join_cluster rabbit@node1  # 加入集群
rabbitmqctl stop_app                  # 关闭节点 

3 ) 生产环境必备命令

# 监控连接数峰值 
rabbitmqctl status | grep max_connections 
 
# 动态调整日志级别
rabbitmqctl set_log_level debug

运维提示:命令行工具与管控台功能互补,生产环境推荐组合使用

RabbitMQ 核心知识点总结


  1. 高性能原理:

    • Erlang/OTP 优势:
      • 轻量级进程上下文切换(优于 Java/C)
      • 网络 I/O 性能接近原生 Socket ,避免内核瓶颈
  2. AMQP 协议核心模型

组件作用
Exchange消息路由中枢(Direct/Topic/Fanout 策略)
Queue消息存储实体(持久化保障宕机不丢失)
Binding交换机与队列的绑定规则(Topic 支持 */# 通配符)
  1. AMQP 协议核心:
  • 组件
    Publish
    Route
    Route
    Producer
    Exchange
    Queue 1
    Queue 2
    Consumer
    Consumer
  • 交换机类型:
    类型规则适用场景
    direct路由键精确匹配绑定键点对点消息(订单支付)
    fanout广播到所有绑定队列通知广播(日志分发)
    topic路由键通配符匹配(*/#)灵活路由(消息分类)
    • 路由规则:
      • direct:精准路由(如订单状态更新)
      • fanout:广播(如系统公告)
      • topic:多级路由(如日志分类:*.error)
  • 特殊交换机:
    • amq.direct(默认路由键 = 队列名),无需手动绑定
  • 创建交换机示例:
    # 命令行创建持久化 direct 交换机 
    rabbitmqctl add_exchange drink direct durable true
    
  1. 生产环境安全规范:
    • 禁用默认账号 guest,创建独立管理员账号。
    • 限制连接数(Max Connections ≤ 500)、队列数(Max Queues ≤ 100)。

示例工程: 1


1 ) 方案 1:基础消息生产者-消费者

// producer.service.ts
import { Injectable } from '@nestjs/common';
import { connect, Connection, Channel } from 'amqplib';
 
@Injectable()
export class ProducerService {
  private connection: Connection;
  private channel: Channel;
 
  async connect() {
    this.connection = await connect('amqp://localhost');
    this.channel = await this.connection.createChannel();
    await this.channel.assertExchange('orders', 'direct', { durable: true });
  }
 
  async sendOrder(orderData: string) {
    this.channel.publish('orders', 'order_created', Buffer.from(orderData));
  }
}
 
// consumer.service.ts
import { Injectable } from '@nestjs/common';
import { connect, Connection, Channel } from 'amqplib';
 
@Injectable()
export class ConsumerService {
  async consume() {
    const connection = await connect('amqp://localhost');
    const channel = await connection.createChannel();
    await channel.assertQueue('order_queue');
    await channel.bindQueue('order_queue', 'orders', 'order_created');
 
    channel.consume('order_queue', (msg) => {
      if (msg) {
        console.log('Received:', msg.content.toString());
        channel.ack(msg);
      }
    });
  }
}

2 ) 方案 2:Topic 交换机实现消息路由

// 生产者:发送日志消息
async sendLog(severity: string, message: string) {
  await this.channel.assertExchange('logs', 'topic', { durable: true });
  this.channel.publish('logs', severity, Buffer.from(message));
}
 
// 消费者:订阅 error 级别日志
await channel.assertQueue('error_logs');
await channel.bindQueue('error_logs', 'logs', '*.error');
channel.consume('error_logs', (msg) => {
  console.log('Error Log:', msg.content.toString());
});

方案 3:消息确认与重试机制

// 消费者配置手动确认 + 重试
channel.consume('order_queue', async (msg) => {
  try {
    await processOrder(msg.content);  // 业务处理
    channel.ack(msg);                 // 确认消息
  } catch (error) {
    channel.nack(msg, false, true);   // 重试(重新入队)
  }
});
 
// RabbitMQ 配置(rabbitmq.conf)
consumer_timeout = 30000  # 30秒未确认则重投递

工程示例:2


1 ) 方案 1:基础生产者-消费者

// producer.service.ts 
import { Inject, Injectable } from '@nestjs/common';
import { ClientProxy, Client } from '@nestjs/microservices';
import { Transport } from '@nestjs/microservices';
 
@Injectable()
export class ProducerService {
  @Client({
    transport: Transport.RMQ,
    options: {
      urls: ['amqp://admin:password@localhost:5672'],
      queue: 'coffee',
    },
  })
  client: ClientProxy;
 
  async sendMessage() {
    await this.client.emit('drink', { drink: 'coffee' });
  }
}
 
// consumer.controller.ts
import { Controller } from '@nestjs/common';
import { MessagePattern, Payload } from '@nestjs/microservices';
 
@Controller()
export class ConsumerController {
  @MessagePattern('drink')
  handleDrink(@Payload() data: any) {
    console.log('Received:', data); // { drink: 'coffee' }
  }
}

2 ) 方案 2:Topic 交换机路由

// 生产者配置
@Client({
  transport: Transport.RMQ,
  options: {
    urls: ['amqp://localhost:5672'],
    exchange: 'drink_topic',
    exchangeType: 'topic',
  },
})
 
// 消费者订阅 
@MessagePattern('drink.*')  // 匹配 drink.coffee / drink.tea 
handleDrink(@Payload() data: string) {
  // 业务逻辑 
}

3 ) 方案 3:消息持久化与 ACK 确认

// 消费者配置(main.ts)
const app = await NestFactory.createMicroservice(AppModule, {
  transport: Transport.RMQ,
  options: {
    urls: ['amqp://localhost:5672'],
    queue: 'persistent_queue',
    noAck: false, // 开启手动 ACK
    persistent: true, // 消息持久化 
  },
});
 
// 手动确认消息
@MessagePattern('order')
handleOrder(@Payload() data: any, @Ctx() context: RmqContext) {
  const channel = context.getChannelRef();
  const msg = context.getMessage();
  // ...处理业务...
  channel.ack(msg); // 明确确认消息 
}

RabbitMQ 关联配置(docker-compose.yml)

services:
  rabbitmq:
    image: rabbitmq:3-management 
    ports:
      - "5672:5672"
      - "15672:15672"
    environment:
      RABBITMQ_DEFAULT_USER: admin
      RABBITMQ_DEFAULT_PASS: password
    volumes:
      - rabbitmq-data:/var/lib/rabbitmq
 
volumes:
  rabbitmq-data:

工程示例:3


1 ) 方案 1:生产者-消费者基础实现

// producer.service.ts 
import { Injectable } from '@nestjs/common';
import { connect, Connection, Channel } from 'amqplib';
 
@Injectable()
export class ProducerService {
  private connection: Connection;
  private channel: Channel;
 
  async connect() {
    this.connection = await connect('amqp://admin:adminpassword@localhost');
    this.channel = await this.connection.createChannel();
    await this.channel.assertExchange('drink', 'direct', { durable: true });
  }
 
  async publishMessage(routingKey: string, message: string) {
    this.channel.publish('drink', routingKey, Buffer.from(message));
  }
}
 
// consumer.service.ts 
import { Injectable } from '@nestjs/common';
import { connect, Connection, Channel, ConsumeMessage } from 'amqplib';
 
@Injectable()
export class ConsumerService {
  async startConsumer(queue: string) {
    const connection = await connect('amqp://admin:adminpassword@localhost');
    const channel = await connection.createChannel();
    await channel.assertQueue(queue, { durable: true });
    await channel.bindQueue(queue, 'drink', 'coffee_rk');
 
    channel.consume(queue, (msg: ConsumeMessage) => {
      if (msg) {
        console.log(`Received: ${msg.content.toString()}`);
        channel.ack(msg);  // 手动消息确认
      }
    });
  }
}

2 ) 方案 2:多交换机类型进阶场景

// fanout 广播实现 
await channel.assertExchange('notifications', 'fanout', { durable: true });
await channel.bindQueue('email_queue', 'notifications', '');
await channel.bindQueue('sms_queue', 'notifications', '');
 
// topic 通配符路由
await channel.assertExchange('logs', 'topic', { durable: true });
await channel.bindQueue('error_queue', 'logs', '*.error');

3 ) 方案 3:生产级配置优化

rabbitmq.conf (核心配置)
disk_free_limit.absolute = 5GB        # 磁盘警戒线 
vm_memory_high_watermark.relative = 0.6 # 内存使用上限 60%
max_connections = 500                 # 最大连接数 
channel_max = 1024                    # 单连接最大通道数

全方位配置处理

  1. 持久化策略:
    • 交换机/队列声明时设置 durable: true
    • 消息投递设置 deliveryMode: 2
  2. 高可用方案:
    # 镜像队列配置(跨节点复制)
    rabbitmqctl set_policy HA ".*" '{"ha-mode":"all"}' 
    
  3. 监控集成:
    • Prometheus + Grafana 收集 rabbitmq_metrics
    • 关键指标:message_ready、unacked_messages、disk_space

周边配置优化


  1. 持久化设置:

    // 队列/消息持久化
    await channel.assertQueue('payment', { durable: true });
    channel.sendToQueue('payment', Buffer.from(data), { persistent: true });
    
  2. 集群高可用:

    # 节点加入集群
    rabbitmqctl stop_app
    rabbitmqctl join_cluster rabbit@primary-node
    rabbitmqctl start_app 
    
  3. 监控告警:

    • 通过管控台 Overview 监控 Unacked 消息堆积。
    • 集成 Prometheus:启用 rabbitmq_prometheus 插件。

关键术语解释(初学者友好)

  • Erlang/OTP:开源电信平台,RabbitMQ 的底层运行时,以高并发和容错著称
  • AMQP 协议:高级消息队列协议,定义生产者/交换机/队列/消费者间的通信规则
  • RoutingKey:生产者发送消息时指定的路由键,决定消息流向哪个队列
  • BindingKey:队列绑定到交换机时定义的匹配规则,与 RoutingKey 匹配则接收消息

关键总结

  1. 安装安全:严格使用官方渠道,避免后门风险。
  2. 管控台核心:实时监控消息状态(Ready/Unacked)、交换机路由绑定、资源限制配置
  3. 消息可靠性:持久化交换机/队列 + 手动 ACK 机制
  4. 性能调优:
    • 连接池复用(避免频繁创建 TCP 连接)
    • 队列限额(max-length 防内存溢出)
  5. 监控闭环:管控台 + 命令行工具组合观测消息流
  6. 命令行价值:自动化部署场景不可替代,牢记 list/purge/delete + --help 口诀。
  7. NestJS 最佳实践:
    • 生产者-消费者解耦
    • Topic 交换机实现灵活路由
    • 消息确认+重试保障可靠性
RabbitMQ安装教程(超详细) 本教程是在centos8下试验的,其实linux系统的都差不多RabbitMQ官方:Messaging that just works — RabbitMQRabbitMQ是开源AMQP实现,服务器端用Erlang语言编写,Python、Ruby、 NET、Java、JMS、c、PHP、action screcrive AMQP (高级消息队列协议)和高级消息队列协议是APP应用层协议的开放标准,是为面向消息的中间件而设计的。消息中间件主要用于组件之间的解耦,其中消息的发送方不需要知道消息使用者的存在,反之 阅读详情

相关推荐

RabbitMQ - SpringBoot集成版 - 开发+运维

创建交换机进行参数设置;创建队列进行参数设置;两者进行关联绑定提供者:通过RabbitTemplate,指定参数(交换机名称、路由键、消息)进行消息推送消费者:监听指定队列的消息消费者提供者的数据流转在节点的过程,涉及到了序列化,中间件已经帮我们处理。

. 4706

RabbitMQ安装教程(最新RabbitMQ安装,通用教程)

RabbitMQ是一个开源的遵循AMQP协议实现的基于Erlang语言编写,**即需要先安装部署Erlang环境再安装RabbitMQ环境。**需加注意的是,读者若不想跟着我的版本号下载安装,可根据两者版本号的对应表(下面图示只展示了部分),安装相应版本的Erlang和RabbitMQ,只需在下文修改命令里面的版本号即可。Linux系统CentOS7.x(如果是CentOS8.x的话,需要修改下面两个环境版本号中的el7为el8)ErlangRabbitMQ作者这里同时另外提供链接链接。...

m0_67392182的博客 4万+

RabbitMQ在Windows环境下的部署与配置指南

消息队列作为分布式系统架构中的核心组件,通过异步通信机制实现系统解耦和流量削峰。RabbitMQ作为AMQP协议的经典实现,以其轻量级架构和可靠的消息传递机制,在金融支付、医疗信息化等高并发场景广泛应用。本文以Windows Server环境为例,详细解析Erlang运行时与RabbitMQ 3.9.x版本的兼容性配置,涵盖从基础安装、集群搭建到TLS加密通信的全流程实践。针对企业级部署需求,特别介绍磁盘预警阈值设置、Prometheus监控集成等运维关键点,帮助开发者在传统Windows环境中构建高可用的

weixin_32705179的博客 243

RabbitMQ详细安装教程(亲测可用)

RabbitMQ Windows版安装教程

花生了什么树的博客 9673

一文详解Windows安装配置RabbitMQ教程及RabbitMQ常用命令及解决Erlang Could not be detected.you must install Erlang before

一文详解Windows安装RabbitMQ教程,同时解决在安装过程中出现的问题,并说明rabbitMq对应的erlang版本,又把rabbitMq和erlang存储到我的百度云盘和微云中,读者可以直接下载即可。

念兮为美 1万+

RabbitMQ 3.5.7安装与配置指南

在当今的软件开发和运维领域中,消息队列技术已成为企业级应用架构的重要组成部分。RabbitMQ作为领先的开源消息代理软件,它基于高级消息队列协议(AMQP)实现,并通过提供可靠的消息传输机制,助力于构建可扩展和灵活的分布式系统。RabbitMQ是使用Erlang语言编写的高性能消息队列服务器。它支持多种消息传递协议,易于部署和运维,广泛应用于企业应用的异步消息处理中。其核心功能包括消息发布与订阅、消息确认机制、消息持久化等。

weixin_42576410的博客 1031

RabbitMQ 安装与配置

本文详细介绍了RabbitMQ在Windows系统上的安装与配置流程。首先需要准备Windows 10/11 64位环境,安装ERLANG/OTP 24.0+作为依赖。RabbitMQ安装完成后,通过sbin目录下的命令管理服务。重点介绍了管理插件的启用方法和Web管理界面的使用(默认地址http://localhost:15672,账号guest/guest)。文章还提供了常见问题解决方案、环境变量优化建议以及日志管理等高级配置技巧,最后强调版本兼容性要求和服务验证方法。所有操作均需管理员权限执行。

Terio的博客 1071

基于Kubernetes的ML平台架构设计

本文在Kubernetes开源组件的基础上,对ML平台各部分组件的作用进行了介绍,并且进行了组件选型,初步设计了ML平台的技术架构。

2401_83124266的博客 2052

RabbitMQ基础

RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据。

weixin_74417835的博客 464

《惠普工作站设置BIOS从U盘装系统》

惠普工作站设置BIOS 惠普工作站在做服务器时应用广泛,本文介绍下其BIOS开机自启动设置,附上图片,以供学习参考。 惠普工作站设置BIOS 启动步骤如下: 第一步:根据需要对BIOS进行更改,并保存 1.重启工作站按F10进入BIOS设置(也可以按ESC键选择进入BIOS设置的选项)。 图1 惠普工作站B...

istrangeboy&begin zero的博客 2万+

自动驾驶仿真:Carsim、NI和VTD联合仿真课题二

文章目录前言一、设备配置1、硬件需求2、网络配置二、Carsim工程配置1、创建工程2、创建数据库3、参数配置三、VTD工程配置1、创建工程四、Veristand工程配置1、创建工程五、运行程序 前言 上篇文章《Carsim、NI和VTD联合仿真课题一》简单地介绍了三者之间的联合框架,以及NI与VTD之间简单的组包与拆包指导。这篇文章将要讲述的是如何将三个软件联合起来,如何设置软件参数,用最简单的方法把仿真车开起来。 一、设备配置 1、硬件需求 注:真正的做智能驾驶仿真项目,至少需要两台电脑,一台实时机

zataji的博客 1万+

Ubuntu 22.04服务器环境完整部署指南

可以大幅简化环境配置流程。平台提供可视化界面生成部署脚本,自动处理依赖关系,还能保存常用配置模板。我在测试时发现其生成的Nginx配置模板特别规范,避免了手工编写容易出现的语法错误问题。对于需要频繁部署测试环境的情况,这种自动化工具能节省大量时间。实际部署过程中,使用。

BlueTiger92的博客 725

Error relaunching VirtualBox VM process:5错误解决

前几天在重新使用VirtualBox的时候出现了一个挺恶心的错误,如图 百度了好久没有找到合适的解决方法。功夫不负有心人,在查阅了vb相关论坛时发现了大牛对此问题的诸多解决方案。下面我把此论坛的内容总结一下,希望对大家有帮助。 论坛链接:Diagnosing VirtualBox Hardening Issues 时间不足的小伙伴可以直接看 解决方法 造成这个错误的主要原因是,windows操作系统与oracle vb的不兼容。有两个方面,一是非官方windows系统中包含了一些没有签名的d

JaCenz的博客 3万+

RabbitMQ插件体系:安装、配置与生产实践

消息中间件通过插件机制实现功能扩展,RabbitMQ作为主流企业级消息队列,其插件系统基于Erlang模块动态加载技术,支持热部署与功能裁剪。插件架构通过.ez格式封装功能模块,从协议支持到管理界面均可模块化扩展,这种设计显著提升了系统灵活性和资源利用率。在生产环境中,合理使用rabbitmq_delayed_message_exchange等插件可解决延迟队列、消息追踪等典型场景需求,同时需注意版本兼容性和内存控制。通过rabbitmq_management等管理插件可实现可视化监控,结合Promethe

weixin_33393017的博客 185

CVPR 2027 投稿规划:基于近3年录用率与截稿周期的5步时间管理法

本文为计算机视觉研究者提供CVPR 2027投稿的完整规划指南,基于近三年录用率与截稿周期数据,提出五步时间管理法。涵盖选题策略、实验设计、论文写作、同行评审到最终提交的全流程优化,特别针对CVPR日益激烈的竞争环境(2024年投稿量达11532篇,录取率仅23.6%)提供实用解决方案,帮助研究者提升投稿成功率。

weixin_34079177的博客 1176

1014. 福尔摩斯的约会 (20)-PAT乙级真题

1014. 福尔摩斯的约会 (20) 大侦探福尔摩斯接到一张奇怪的字条:“我们约会吧!3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm”。大侦探很快就明白了,字条上奇怪的乱码实际上就是约会的时间“星期四 14:04”,因为前面两字符串中第1对相同的大写英文字母(大小写有区分)是第4个字母’D’,代表星期四;第2对相同的字符是’

柳婼 の blog 2646

字节跳动3-3大牛力荐!RabbitMQ实战指南:消息队列面试必刷手册

RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用。作为一名合格的开发者,有必要对RabbitMQ有所了解。以熟悉的电商场景为例,如果商品服务和订单服务是两个不同的微服务,在下单的过程中订单服务需要调用商品服务进行扣库存操作。按照传统的方式,下单过程要等到调用完毕之后才能返回下单成功,如果网络产生波动等原因使得商品服务扣库存延迟或者失败,会带来较差的用户体验,如果在高并发的场景下,这样的处理显然是不合适的,那怎么进行优化呢?这就需要消息队列登场了。

m0_57042151的博客 101

[PCIe5.0] 5.3.1.4.2 D3Cold State

主电源(Vcc)完全断开,仅保留极少量辅助电源(Vaux)用于维持基本唤醒功能设备功能完全关闭,所有寄存器状态丢失(除非有特殊存储)需要完全重新初始化才能恢复工作比D3Hot状态功耗更低,但唤醒延迟更长。

系统固件工程师 455

linux的各种安装配置和编译首页

VMware与Centos系统安装 https://www.cnblogs.com/LLBFWH/articles/10991478.html centos7安装python3 以及tab补全功能 https://www.cnblogs.com/LLBFWH/articles/10991353.html python开发之virtualenv与virtualenvwrapper讲...

weixin_30664539的博客 140

安全监控:人员行为分析_(2).人员行为分析基础理论

人员行为分析是指利用计算机视觉技术对视频中的人类行为进行实时或离线检测、识别和理解的过程。视频采集:通过摄像头等设备获取视频数据。视频预处理:对视频数据进行噪声过滤、图像增强等处理,以便后续分析。特征提取:从视频中提取出与人员行为相关的特征,如人体姿势、动作轨迹等。行为识别:利用机器学习或深度学习模型对提取的特征进行分类,识别出具体的人员行为。行为理解:对识别出的行为进行进一步分析,理解其背后的意图或状态。在人员行为分析中,常用的公开数据集包括UCF101、HMDB51、ActivityNet等。

zhubeibei168的博客 1347

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RabbitMQ插件系统全解析:从安装到开发实践

消息队列作为分布式系统的核心组件,其扩展能力直接影响系统架构的灵活性。RabbitMQ通过插件机制实现功能扩展,这种基于Erlang/OTP的设计允许动态加载功能模块而无需修改核心代码。插件系统采用.ez文件格式部署,支持热加载和版本隔离,既能保证系统稳定性,又能满足定制化需求。在消息中间件领域,插件技术常用于实现消息转换、延迟队列、跨集群同步等高级功能。以rabbitmq_delayed_message_exchange和rabbitmq_management为代表的官方插件,解决了定时消息投递和可视化监

weixin_33834075的博客 372

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

RabbitMQ 进阶实战:可靠性、死信、延迟消息与集群高可用

消息队列是分布式系统解耦与削峰填谷的核心组件,其可靠性设计直接关系到业务数据的最终一致性。在消息从生产者到消费者的链路上,生产确认、路由匹配与消费确认任一环节出现疏漏,都可能导致消息丢失或重复消费。理解交换机类型、持久化机制以及手动 ACK 与预取数的配合,是构建稳定消息系统的关键。死信队列与 TTL 机制为异常消息提供了统一的补偿入口,而延迟消息能力则能覆盖订单超时关闭等典型时间驱动场景。对于集群部署,从 Docker Compose 本地搭建到仲裁队列的高可用选型,再到启动失败与内存告警的排查策略,都是

weixin_31102231的博客 161

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

《Linux运维篇:Linux系统运维指南》

《Linux运维篇:Linux系统运维指南》

东城绝神 1万+

RabbitMQ Operator在 Kubernetes 中的部署与运维全指南

本文介绍了RabbitMQ在Kubernetes中的两种Operator:Cluster Operator用于管理集群生命周期,支持部署、监控和扩容等;Messaging Topology Operator用于管理消息拓扑结构。文章详细说明了安装方法(包括kubectl插件和Helm方式)、默认配置修改以及使用注意事项,特别强调了Secret管理和特性标志的限制。两个Operator协同工作,分别负责集群运维和拓扑管理,为RabbitMQ在K8s环境中的部署提供了完整的解决方案。

qq_62935472的博客 944

Docker安装部署RabbitMQ详解

本文全面介绍了使用Docker容器化部署RabbitMQ的完整流程与优化策略。首先阐述了容器化部署的核心优势,包括环境一致性、资源隔离和弹性伸缩能力。接着详细讲解了从环境准备、镜像拉取到容器创建的全过程,并提供了服务验证与管理界面操作指南。文章重点介绍了数据持久化与备份策略,通过数据卷和备份命令确保消息不丢失。最后分享了进阶配置技巧,包括资源限制设置和集群部署要点,帮助读者构建高可用的RabbitMQ服务。通过Docker部署RabbitMQ,开发者可以快速搭建可靠的消息队列系统,大幅提升开发和运维效率。

没事学AI的博客 2565

OpenEuler系统下RabbitMQ安装与基础配置教程

OpenEuler系统下RabbitMQ安装与基础配置教程RabbitMQ是一款基于AMQP(高级消息队列协议)的开源消息中间件,广泛应用于分布式系统中的消息传递、异步通信等场景。本文将详细介绍在OpenEuler(欧拉)操作系统下,通过两种主流方式安装RabbitMQ,并完成基础配置与验证,适用于开发、测试及生产环境的基础部署需求。一、前置准备1.1 系统环境要求操作系统:OpenEuler 22.03 LTS 及以上版本(本文基于OpenEuler 22.03 LTS验证)

张晨光老师的播客 1256
上一篇: RabbitMQ: 消息中间件技术选型
下一篇: RabbitMQ: 消息交换机制的核心原理与实践指南之基于 AMQP 协议的系统设计与工程实现
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值