Apusic文档中心
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 金蝶Apusic AI 极光
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
首页
  • 应用服务器 AAS
  • 负载均衡器 ALB
  • 分布式消息队列 ADMQ
  • 分布式缓存 AMDC
  • 分布式配置中心 ADCC
  • Java开发工具包软件 AJDK
  • 搜索引擎 ASE
  • 中间件云平台 ACP
  • 统一管理平台 AUMP
  • 云原生中间件管理 ACMP
  • DevOps平台 ADOP
  • 许可授权中心 ACLS
  • Copilot智能问答系统 ACS
  • 监控平台 AMP
  • 智能日志 AILP
  • 应用性能管理 AAPM
  • 智能告警 AAlarm
  • 金蝶Apusic AI 极光
  • 主数据管理 AMDM
  • 数据交换平台 ADXP
  • 企业服务总线 AESB
  • 数据智脑 ADPR
  • 服务治理 ASGP
  • 统一身份管理 AIDM
  • 标准模板
  • Markdown教程 (opens new window)
  • VuePress官方社区 (opens new window)
  • 帮助
贡献文档 (opens new window)
文档中心
  • 金蝶Apusic应用服务器

  • 金蝶Apusic负载均衡器

  • 金蝶Apusic分布式消息队列

    • 产品白皮书
    • Product Whitepaper
    • 產品白皮書
    • 产品更新说明
    • 统一管控台

    • V2.0.6(最新)

    • V2.0.6_for_kafka

    • V2.0.6_for_rabbitmq

      • 产品简介
      • 功能与技术规格
      • 安装手册
      • 快速使用手册
      • 管控台用户手册
      • 消息引擎用户手册
      • 开发手册
      • 迁移手册
      • 运维手册
      • 性能优化手册
      • 极简运维手册
      • English

      • 繁體中文

        • 產品介紹
        • 技術規範
        • 安裝手冊
        • 快速入門
        • 管控台使用者手冊
        • 核心引擎使用者手冊
        • 開發手冊
        • 遷移手冊
        • 維運手冊
        • 效能調優
        • 快速操作指南
    • V2.0.6_for_rocketmq

    • V2.0.6_for_MQTT

    • V2.0.5

    • V2.0.4

    • V2.0.3

  • 金蝶Apusic分布式缓存

  • 金蝶Apusic分布式配置中心

  • 金蝶Apusic Java开发工具包软件

  • 金蝶Apusic全文检索

快速操作指南

# 一、部署架構

# 整體架構

┌─────────────────────────────────────────────────────────────┐
│                        客户端层                               │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │ 生产者应用   │  │ 消费者应用   │  │ 管控台/Web管理       │  │
│  └─────────────┘  └─────────────┘  └─────────────────────┘  │
└────────────────────────┬────────────────────────────────────┘
                         │ AMQP/MQTT/STOMP
┌────────────────────────▼────────────────────────────────────┐
│                     消息引擎层                                │
│  ┌───────────────────────────────────────────────────────┐  │
│  │              ADMQ for RabbitMQ 节点                    │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌──────────────┐  │  │
│  │  │  连接层      │  │  交换机      │  │   队列        │  │  │
│  │  │ Connection  │  │  Exchange   │  │   Queue      │  │  │
│  │  └─────────────┘  └─────────────┘  └──────────────┘  │  │
│  │                                                        │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌──────────────┐  │  │
│  │  │   路由层     │  │  镜像队列    │  │  持久化存储   │  │  │
│  │  │   Router    │  │Mirror Queue │  │  Mnesia/ETS  │  │  │
│  │  └─────────────┘  └─────────────┘  └──────────────┘  │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
                         │
┌────────────────────────▼────────────────────────────────────┐
│                      集群通信层                               │
│  ┌───────────────────────────────────────────────────────┐  │
│  │              Erlang Distribution 网络                  │  │
│  │            (节点间元数据同步与心跳检测)                  │  │
│  └───────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 部署模式

部署模式 節點數 適用場景 高可用性
單機部署 1 節點 開發測試 無
普通叢集 2+ 節點 生產環境 元資料高可用
映象佇列叢集 3+ 節點 生產環境 元資料+資料高可用

# 二、快速安裝

# 1. 環境準備

元件 最低要求 推薦配置
CPU 4 核 8 核及以上
記憶體 8 GB 16 GB 及以上
磁碟 100 GB SSD 500 GB 及以上 SSD
作業系統 CentOS 7+, Ubuntu 18.04+, 麒麟, 統信 -

埠要求:

埠 用途
5672 AMQP 協定
15672 Web 管理介面
25672 叢集節點間通訊

# 2. 單機安裝

# 建立目錄
mkdir -p /apusic && cd /apusic

# 解壓安裝包
tar zxvf ADMQ-V2.0.6.xxx.tar.gz
cd admq-rabbitmq

# 放置 license.xml 授權檔案到根目錄
# 修改主機名(只能包含字母、數字、連字元)
hostname node1

# 啟動服務
bin/admq-daemon start rabbitmq server
1
2
3
4
5
6
7
8
9
10
11
12
13

# 3. 叢集安裝(3 節點)

所有節點執行:

mkdir -p /apusic && cd /apusic
tar zxvf ADMQ-V2.0.6.xxx.tar.gz
cd admq-rabbitmq

# 放置 license.xml
# 修改主機名
hostname node171  # node172, node173

# 配置 /etc/hosts
172.20.140.171 node171
172.20.140.172 node172
172.20.140.173 node173

# 啟動服務
bin/admq-daemon start rabbitmq server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

Node 1 執行叢集建立:

bin/admq rabbitmq cluster add -s 172.20.140.172:58181 -u monitor -p apusic_123
bin/admq rabbitmq cluster add -s 172.20.140.173:58181 -u monitor -p apusic_123
1
2

開啟映象佇列(可選):

bin/admq rabbitmq admin ctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
1

# 三、核心概念

# 訊息模型

Producer -> Exchange -> [Binding/Routing Key] -> Queue -> Consumer
1

# 交換機型別

型別 路由方式 適用場景
Direct 精確匹配 Routing Key 點對點訊息
Fanout 廣播到所有佇列 廣播通知
Topic 模式匹配 * # 日誌分類、事件路由
Headers 基於訊息頭匹配 複雜條件路由

# 佇列型別

型別 特點 適用場景
Classic Queue 傳統佇列,支援映象 一般業務場景
Quorum Queue 基於 Raft,自動多副本 高可用場景
Stream Queue 只追加日誌,支援多次讀取 高吞吐、日誌場景

# 四、常用命令速查

# 服務管理

# 啟動/停止/重啟
bin/admq-daemon start rabbitmq server
bin/admq-daemon stop rabbitmq server
bin/admq-daemon restart rabbitmq server

# 應用啟停
bin/admq rabbitmq admin ctl start_app
bin/admq rabbitmq admin ctl stop_app
1
2
3
4
5
6
7
8

# 狀態檢視

# 節點狀態
bin/admq rabbitmq admin ctl status

# 叢集狀態
bin/admq rabbitmq admin ctl cluster_status

# 健康檢查
bin/admq rabbitmq admin diagnostics health_check

# 記憶體使用
bin/admq rabbitmq admin diagnostics memory_breakdown
1
2
3
4
5
6
7
8
9
10
11

# 使用者管理

# 建立使用者
bin/admq rabbitmq admin ctl add_user username password
bin/admq rabbitmq admin ctl set_user_tags username administrator
bin/admq rabbitmq admin ctl set_permissions -p /vhost username ".*" ".*" ".*"

# 修改密碼
bin/admq rabbitmq admin ctl change_password username newpassword

# 刪除使用者
bin/admq rabbitmq admin ctl delete_user username

# 檢視使用者
bin/admq rabbitmq admin ctl list_users
1
2
3
4
5
6
7
8
9
10
11
12
13

# 佇列管理

# 檢視佇列
bin/admq rabbitmq admin ctl list_queues
bin/admq rabbitmq admin ctl list_queues name messages consumers

# 檢視交換機
bin/admq rabbitmq admin ctl list_exchanges name type

# 檢視連線
bin/admq rabbitmq admin ctl list_connections peer_host state

# 檢視通道
bin/admq rabbitmq admin ctl list_channels connection consumer_count
1
2
3
4
5
6
7
8
9
10
11
12

# 叢集管理

# 檢視叢集狀態
bin/admq rabbitmq admin ctl cluster_status

# 檢視佇列詳情(含映象)
bin/admq rabbitmq admin ctl list_queues name pid slave_pids synchronised_slave_pids

# 移除故障節點
bin/admq rabbitmq admin ctl forget_cluster_node rabbit@node2
1
2
3
4
5
6
7
8

# 策略管理

# 檢視策略
bin/admq rabbitmq admin ctl list_policies

# 設定映象策略
bin/admq rabbitmq admin ctl set_policy ha-all "^" '{"ha-mode":"all"}' --priority 0 --apply-to queues

# 清除策略
bin/admq rabbitmq admin ctl clear_policy ha-all
1
2
3
4
5
6
7
8

# 備份恢復

# 匯出配置
bin/admq rabbitmq admin ctl export_definitions /backup/definitions.json

# 匯入配置
bin/admq rabbitmq admin ctl import_definitions /backup/definitions.json

# 備份 Mnesia
bin/admq rabbitmq admin ctl eval 'rabbit_mnesia:backup("/backup/mnesia.backup").'
1
2
3
4
5
6
7
8

# 五、日常運維

# 日誌位置

日誌型別 路徑
服務日誌 ./log/rabbitmq/rabbit@hostname.log
啟動日誌 ./log/rabbitmq/rabbit@hostname-sasl.log
管控臺日誌 ./logs/

# 日常檢查清單

檢查項 命令 正常標準
節點狀態 bin/admq rabbitmq admin ctl status 執行正常
叢集狀態 bin/admq rabbitmq admin ctl cluster_status 所有節點線上
佇列堆積 bin/admq rabbitmq admin ctl list_queues messages 無異常堆積
記憶體使用 bin/admq rabbitmq admin ctl status 低於水位線
磁碟空間 df -h 高於 disk_free_limit

# 健康檢查指令碼

#!/bin/bash
# 節點健康檢查
bin/admq rabbitmq admin diagnostics health_check

# 記憶體檢查
bin/admq rabbitmq admin diagnostics memory_breakdown

# 告警佇列檢查(訊息數 > 10000)
bin/admq rabbitmq admin ctl list_queues name messages consumers | awk '$2 > 10000 {print "WARNING: Queue "$1" has "$2" messages"}'

# 連線數檢查
CONN_COUNT=$(bin/admq rabbitmq admin ctl list_connections | wc -l)
if [ $CONN_COUNT -gt 1000 ]; then
    echo "WARNING: Connection count $CONN_COUNT exceeds threshold"
fi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 六、配置最佳化

# rabbitmq.conf 核心配置

# 網路
listeners.tcp.default = 5672
listeners.ssl.default = 5671

# 記憶體(推薦 0.6-0.7)
vm_memory_high_watermark.relative = 0.6
vm_memory_high_watermark_paging_ratio = 0.5

# 磁碟(推薦絕對值 1GB)
disk_free_limit.relative = 1.5
disk_free_limit.absolute = 1GB

# 連線
channel_max = 2047
heartbeat = 30

# 佇列
queue_master_locator = min-masters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 系統最佳化

# 檔案描述符
ulimit -n 65535

# 核心引數(/etc/sysctl.conf)
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.core.somaxconn = 65535
vm.swappiness = 10

# 磁碟排程
echo deadline > /sys/block/sda/queue/scheduler
1
2
3
4
5
6
7
8
9
10
11

# 七、故障排查

# 服務無法啟動

現象 可能原因 解決方案
埠被佔用 5672/15672 被佔用 停止佔用程序或修改埠
Cookie 不一致 叢集節點 Cookie 不匹配 同步 .erlang.cookie
記憶體不足 系統記憶體不足 增加記憶體或降低水位線
磁碟不足 低於 disk_free_limit 清理磁碟或調整限制

# 訊息消費異常

現象 可能原因 解決方案
訊息堆積 消費者過慢或離線 增加消費者或最佳化邏輯
訊息丟失 未啟用持久化 啟用 delivery_mode=2
重複消費 確認超時 最佳化處理邏輯,及時確認

# 叢集異常

現象 可能原因 解決方案
節點離線 網路故障 檢查網路,重啟服務
腦裂 網路分割 使用 forget_cluster_node 清理
佇列不可用 節點離線 使用映象佇列或 Quorum Queue

# 診斷命令

# 檢視詳細資訊
bin/admq rabbitmq admin ctl status
bin/admq rabbitmq admin ctl cluster_status
bin/admq rabbitmq admin ctl list_connections peer_host peer_port state
bin/admq rabbitmq admin ctl list_queues name messages consumers memory

# 檢視記憶體/程序
bin/admq rabbitmq admin diagnostics memory_breakdown
bin/admq rabbitmq admin diagnostics processes
bin/admq rabbitmq admin diagnostics connections
1
2
3
4
5
6
7
8
9
10

# 八、安全加固

# 修改預設使用者

# 刪除預設 guest 使用者
bin/admq rabbitmq admin ctl delete_user guest

# 建立新管理員
bin/admq rabbitmq admin ctl add_user admin strongpassword
bin/admq rabbitmq admin ctl set_user_tags admin administrator
bin/admq rabbitmq admin ctl set_permissions -p / admin ".*" ".*" ".*"
1
2
3
4
5
6
7

# 防火牆配置

firewall-cmd --permanent --add-port=5672/tcp
firewall-cmd --permanent --add-port=15672/tcp
firewall-cmd --permanent --add-port=25672/tcp
firewall-cmd --reload
1
2
3
4

# SSL 配置

listeners.ssl.default = 5671
ssl_options.cacertfile = /path/to/ca_certificate.pem
ssl_options.certfile = /path/to/server_certificate.pem
ssl_options.keyfile = /path/to/server_key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = false
1
2
3
4
5
6

# 九、效能最佳化要點

# 佇列最佳化

Map<String, Object> args = new HashMap<>();
// 佇列長度限制
args.put("x-max-length", 100000);
args.put("x-max-length-bytes", 1073741824);  // 1GB

// 訊息 TTL
args.put("x-message-ttl", 3600000);  // 1小時

// 惰性佇列(減少記憶體)
args.put("x-queue-mode", "lazy");
1
2
3
4
5
6
7
8
9
10

# 用戶端最佳化

// 連線池 + 自動恢復
factory.setAutomaticRecoveryEnabled(true);
factory.setNetworkRecoveryInterval(5000);

// 單連線多通道
Connection connection = factory.newConnection();
for (int i = 0; i < 10; i++) {
    Channel channel = connection.createChannel();
}

// QoS 預取
channel.basicQos(100);

// 批量確認
channel.basicAck(deliveryTag, true);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 監控指標

指標 說明
rabbitmq_connections 連線數
rabbitmq_queue_messages 總訊息數
rabbitmq_node_mem_used 記憶體使用量
rabbitmq_node_disk_free 磁碟剩餘空間

# 十、運維最佳實踐

  1. 定期檢查:建立日常檢查機制
  2. 監控告警:配置完善的監控告警體系
  3. 備份策略:定期備份配置和資料
  4. 容量規劃:提前評估並擴容
  5. 安全更新:及時更新安全修補程式
  6. 最小許可權:為業務使用者分配最小必要許可權
  7. 災難演練:定期進行故障恢復演練

技術支援:

  • 網址:www.apusic.com
  • 電話:400-855-5800
  • 郵箱:support@apusic.com
编辑页面 (opens new window)
#运维手册

← 效能調優 产品简介→

  • 浅色模式