@moon791017/neo-skills 1.1.26 → 1.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -63,6 +63,7 @@
63
63
  | Agent 架構 | `neo-sub-agent` | 設計、建立、審查或轉換 sub-agent、custom agent、worker/reviewer/planner agent 或 multi-agent workflow。 |
64
64
  | 技能開發 | `generate-skill` | 建立、更新、審查或最佳化 Agent Skill,包含規格、觸發描述、延伸資源、評估資料與設計模式。 |
65
65
  | 可觀測性 | `neo-opentelemetry` | 解釋 OpenTelemetry 概念、規劃或審查 Collector 架構與設定、處理維運排障、安全、零程式 instrumentation 及相容性遷移。 |
66
+ | queue | `neo-rabbitmq` | 以 RabbitMQ 4.3 為預設,提供語言中立的訊息拓撲、Broker 營運、監控排障與效能優化指引。 |
66
67
  | 文字潤飾 | `neo-stop-slop` | 去除繁中或英文中的 AI 腔、贅詞、公式化句式,支援文件、註解、commit message 與 PR 說明。 |
67
68
  | PR 產出 | `neo-pr` | 詢問或自動偵測 Repository 來源與目標分支,擷取變更並產生重點式且去 AI 腔的 PR Title 與 PR Description。 |
68
69
 
@@ -156,4 +157,5 @@ npx -p @moon791017/neo-skills install-system-instructions \
156
157
  | 建立 Agent 治理 | `neo-harness` | `幫我針對這個專案評估並產生 AGENTS.md` |
157
158
  | 建立 sub-agent | `neo-sub-agent` | `幫我新增一個 Codex code-reviewer sub agent` |
158
159
  | 規劃 OpenTelemetry | `neo-opentelemetry` | `幫我審查 Collector 架構、韌性、安全與零程式觀測方案` |
160
+ | 設計 RabbitMQ 系統 | `neo-rabbitmq` | `請分析 RabbitMQ Queue 堆積、叢集營運與效能瓶頸` |
159
161
  | 去掉 AI 腔 | `neo-stop-slop` | `把這段 PR 說明改得自然、直接一點` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moon791017/neo-skills",
3
- "version": "1.1.26",
3
+ "version": "1.1.27",
4
4
  "type": "module",
5
5
  "description": "Neo Skills: A Universal AI Agent Skills Extension",
6
6
  "homepage": "https://neo-blog-iota.vercel.app/",
@@ -0,0 +1,89 @@
1
+ ---
2
+ name: neo-rabbitmq
3
+ description: >
4
+ Use this skill when a request involves RabbitMQ message-topology design, reliability
5
+ analysis, Broker operations, cluster or security configuration, monitoring,
6
+ troubleshooting, or performance optimization. Use stable RabbitMQ 4.3 by default
7
+ and keep development guidance language-neutral. Do not use this skill for
8
+ language-specific Client APIs, website implementation, or Blog content.
9
+ compatibility: No runtime is required; verify current RabbitMQ official documentation for version-sensitive commands, configuration defaults, or security behavior.
10
+ metadata:
11
+ version: "1.0.0"
12
+ pattern: "tool-wrapper,pipeline"
13
+ domain: "messaging-operations-performance"
14
+ default-version: "4.3"
15
+ source-revision: "2b61ea8d840a42e1ba46ee2f1fdf0f9aeec63bd9"
16
+ ---
17
+
18
+ # Neo RabbitMQ
19
+
20
+ Use RabbitMQ 4.3 as the default baseline for language-neutral guidance on message design, Broker operations, and performance optimization.
21
+
22
+ ## Scope Boundaries
23
+
24
+ Cover:
25
+
26
+ - Development design: protocols, Virtual Hosts, Exchanges, Bindings, Queues, Publishers, Consumers, Acknowledgements, Publisher Confirms, Prefetch, TTL, Dead Lettering, reliability, and queue-type selection.
27
+ - Operations and management: installation, configuration, CLI tools, Management, permissions, TLS, Plugins, Policies, clusters, backups, upgrades, Kubernetes Operator, and production checks.
28
+ - Performance optimization: connection and Channel lifecycles, flow control, memory, disk, CPU, network, queues, Quorum Queues, Streams, monitoring, capacity, and bottleneck isolation.
29
+ - Troubleshooting: connectivity, authentication, routing, consumer backlog, resource alarms, cluster health, and upgrade risks.
30
+
31
+ Do not cover:
32
+
33
+ - Client APIs, SDK code, and language-specific tutorials for Java, Python, C#, Go, Ruby, or any other programming language.
34
+ - RabbitMQ website React, Docusaurus, styling, deployment, or other website implementation.
35
+ - RabbitMQ Blog, material outside the documented license scope, and documentation unrelated to the three focus areas.
36
+ - Production operations using rabbitmqadmin publish or rabbitmqadmin get; the source instructions explicitly omit these commands.
37
+
38
+ If a request crosses the boundary, answer the language-neutral portion and identify the missing language-specific or product-specific documentation. Never invent a Client API.
39
+
40
+ ## Workflow
41
+
42
+ 1. Classify the request as topology design, reliability, routine operations, security, performance, troubleshooting, upgrade, or capacity planning.
43
+ 2. Identify the version. Use RabbitMQ 4.3 when no version is specified. For current-version behavior, development releases, release notes, Feature Flags, commands, or configuration defaults, consult current official documentation before answering.
44
+ 3. Load only the required references:
45
+ - Development and message semantics: references/development.md
46
+ - Operations, management, and upgrades: references/operations.md
47
+ - Performance, capacity, and monitoring: references/performance.md
48
+ - Layered troubleshooting: references/troubleshooting.md
49
+ - Version, sources, and exclusions: references/sources-and-scope.md
50
+ 4. Gather evidence before drawing conclusions. At minimum, identify the RabbitMQ version, protocol, Virtual Host, Exchange, Queue type, message size and rate, durability, confirmation mode, Consumer behavior, node count, CPU, RAM, disk, network, and relevant metrics. State when the available data is insufficient.
51
+ 5. Separate source facts, recommendations, and inferences. Label inferences explicitly. Do not present a documentation example or single-environment value as a universal default.
52
+ 6. Start with non-destructive checks before proposing changes. For configuration changes, deletion, clearing, restart, failover, or upgrade, state the impact, backup, rollback, and verification conditions.
53
+ 7. Before using CLI examples, consult the corresponding help output when RabbitMQ tools are available locally. Mark every command with its applicable version and required permissions. Never invent parameters.
54
+
55
+ ## Decision Rules
56
+
57
+ - Define delivery, ordering, retry, loss, and duplicate-processing semantics before discussing throughput or latency.
58
+ - Treat Publisher Confirms and Consumer Acknowledgements as separate reliability boundaries. Check message persistence together with Queue durability.
59
+ - Select a Queue type based on data safety, replication, ordering, retention, replay, consumption model, and resource characteristics. Never claim that one type is faster for every workload.
60
+ - Prefer long-lived Connections, Channel reuse, Publisher and Consumer separation, avoiding polling, and a controlled number of unconfirmed messages. Do not treat adding Consumers or increasing Prefetch as a universal solution.
61
+ - Treat Resource Alarms and Flow Control as protection mechanisms and bottleneck signals. Find the root cause in memory, disk, consumption rate, writes, replication, or network before changing alarm settings.
62
+ - Use Policies for settings that can be applied dynamically to groups of objects. Handle Queue or Stream types and other creation-time semantics during design and declaration because they cannot be changed afterward.
63
+ - Establish workload-specific monitoring baselines. Without evidence, do not assume fixed thresholds, capacity, ports, defaults, or security status.
64
+ - Prefer least privilege, Virtual Host isolation, TLS, restricted listeners, secret-free examples, and non-public management endpoints in security guidance.
65
+
66
+ ## Response Contracts
67
+
68
+ ### Topology or Development Design
69
+
70
+ State assumptions, protocol and topology, routing, Queue type, delivery semantics, failure and retry behavior, monitoring metrics, trade-offs, and verification cases. Use concepts, textual topology diagrams, configuration semantics, and protocol fields only. Do not produce Client code in a programming language.
71
+
72
+ ### Operations or Management Runbook
73
+
74
+ Present impact, prerequisites, read-only checks, change steps, rollback steps, health verification, and follow-up monitoring in that order. For clusters, TLS, permissions, backups, and upgrades, state node scope and risks. Never present one unverified command as the complete procedure.
75
+
76
+ ### Performance Analysis
77
+
78
+ Start with the baseline and success criteria. Locate the bottleneck across the end-to-end path: publishing, routing, storage, replication, transport, consumption, or application processing. Change one primary variable at a time and explain expected impact, resource cost, and rollback.
79
+
80
+ ### Troubleshooting
81
+
82
+ Describe symptoms and missing evidence first. Check version and configuration, network and listeners, authentication, clusters, resource alarms, Queues, Publishers, and Consumers in that order. Tie every conclusion to observed evidence and list reproducible verification signals after remediation.
83
+
84
+ ## Fact-Checking Gate
85
+
86
+ - Use sources-and-scope.md as the default RabbitMQ 4.3 source snapshot. The snapshot is not a substitute for current documentation.
87
+ - Treat versions, Feature Flags, Plugins, CLI syntax, configuration keys, defaults, ports, limits, compatibility, and security advisories as changeable information. Consult current official sources before answering.
88
+ - Do not use RabbitMQ Blog content or turn language examples from tutorials or Client Libraries into assumed universal APIs.
89
+ - For production data, message deletion, Queue clearing, permission changes, node shutdown, or upgrades, require sufficient environment evidence and provide rollback and verification steps.
@@ -0,0 +1,82 @@
1
+ [
2
+ {
3
+ "query": "Using language-neutral RabbitMQ 4.3 concepts, design the Exchange, Binding, Queue, confirmation, and retry topology for order events.",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Choose between a general Queue, Quorum Queue, and Stream in RabbitMQ. Analyze the trade-offs for data safety, ordering, replay, and resource use.",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Explain Publisher Confirms and Consumer Acknowledgements, then design a workflow that handles duplicate delivery.",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "RabbitMQ publishing is occasionally blocked. Plan read-only troubleshooting steps using Memory Alarms, Disk Alarms, Flow Control, and Consumer rate.",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Plan TLS, Virtual Host, least privilege, Management, and CLI administration for a RabbitMQ 4.3 cluster.",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "A RabbitMQ Queue keeps growing. Use Consumer Capacity, Prefetch, Ack Rate, Redelivery, and disk metrics to locate the bottleneck.",
24
+ "should_trigger": true
25
+ },
26
+ {
27
+ "query": "Design Prometheus monitoring and a RabbitMQ capacity baseline, including the cost of Per-object metrics.",
28
+ "should_trigger": true
29
+ },
30
+ {
31
+ "query": "We are preparing a node-by-node RabbitMQ upgrade. List checks for the Upgrade Path, Erlang, Feature Flags, backups, cluster health, and rollback.",
32
+ "should_trigger": true
33
+ },
34
+ {
35
+ "query": "RabbitMQ Connection and Channel counts keep increasing. Investigate Churn, File Descriptors, memory, and the application lifecycle.",
36
+ "should_trigger": true
37
+ },
38
+ {
39
+ "query": "Plan Kubernetes storage, TLS, monitoring, upgrades, and failure troubleshooting from the RabbitMQ Operator perspective.",
40
+ "should_trigger": true
41
+ },
42
+ {
43
+ "query": "Write Python code with pika to create a RabbitMQ Exchange, Queue, and Consumer.",
44
+ "should_trigger": false
45
+ },
46
+ {
47
+ "query": "Give me a Java RabbitMQ Client Publisher Confirm API example.",
48
+ "should_trigger": false
49
+ },
50
+ {
51
+ "query": "Implement automatic RabbitMQ reconnect and Prefetch configuration in C#.",
52
+ "should_trigger": false
53
+ },
54
+ {
55
+ "query": "Write a RabbitMQ Stream Producer using the Go Client.",
56
+ "should_trigger": false
57
+ },
58
+ {
59
+ "query": "Show me how to modify React components and the Docusaurus Sidebar in the RabbitMQ website.",
60
+ "should_trigger": false
61
+ },
62
+ {
63
+ "query": "Summarize the latest RabbitMQ Blog post and republish it in full.",
64
+ "should_trigger": false
65
+ },
66
+ {
67
+ "query": "Compare Kafka Broker partition performance without discussing RabbitMQ.",
68
+ "should_trigger": false
69
+ },
70
+ {
71
+ "query": "Optimize PostgreSQL indexes and execution plans.",
72
+ "should_trigger": false
73
+ },
74
+ {
75
+ "query": "Build a general HTTP API retry service without a message Broker.",
76
+ "should_trigger": false
77
+ },
78
+ {
79
+ "query": "Install npm packages and fix dependency conflicts in a Node.js project.",
80
+ "should_trigger": false
81
+ }
82
+ ]
@@ -0,0 +1,114 @@
1
+ {
2
+ "skill_name": "neo-rabbitmq",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "Using language-neutral RabbitMQ 4.3 concepts, design the Exchange, Binding, Queue, confirmation, and retry topology for order events.",
7
+ "expected_output": "State assumptions first, then describe the protocol, Virtual Host, Exchange, Binding, Queue type, Publisher Confirm, Consumer Ack, retry, and Dead Letter paths. Do not include Client code in any programming language.",
8
+ "assertions": [
9
+ "It clearly uses RabbitMQ 4.3 as the baseline before current-version verification",
10
+ "It distinguishes routing success, Publisher Confirm, and Consumer Ack semantics",
11
+ "It lists verification methods for duplicate delivery, retry limits, and Dead Lettering",
12
+ "It uses only topology and protocol semantics and contains no Java, Python, C#, or other language API code"
13
+ ]
14
+ },
15
+ {
16
+ "id": 2,
17
+ "prompt": "Choose between a general Queue, Quorum Queue, and Stream. Analyze the trade-offs for data safety, ordering, replay, and resource use.",
18
+ "expected_output": "Use a requirements matrix to compare the three data structures. Distinguish replication, ordering, Retention, Offset, replay, Consumer model, and resource cost, and require workload-based performance validation.",
19
+ "assertions": [
20
+ "It does not claim that one Queue type is fastest for every workload",
21
+ "It identifies Quorum Queue replication and resource trade-offs",
22
+ "It identifies Stream Offset, Retention, or replay semantics",
23
+ "It provides capacity and failure verification conditions after selection"
24
+ ]
25
+ },
26
+ {
27
+ "id": 3,
28
+ "prompt": "RabbitMQ publishing is occasionally blocked. Plan a safe troubleshooting workflow.",
29
+ "expected_output": "Request the version, nodes, time range, and metrics first. Then isolate Memory Alarms, Disk Alarms, Flow Control, Queue backlog, Consumer rate, disk, and network with read-only checks before proposing changes with rollback steps.",
30
+ "assertions": [
31
+ "It treats alarms as protection mechanisms and bottleneck signals instead of immediately raising thresholds",
32
+ "It lists read-only checks before changes and rollback",
33
+ "It mentions that cluster alarms can affect multiple nodes",
34
+ "It explicitly states that the root cause cannot be determined without environment evidence"
35
+ ]
36
+ },
37
+ {
38
+ "id": 4,
39
+ "prompt": "Plan TLS, Virtual Host, least privilege, Management, and CLI administration for a RabbitMQ 4.3 cluster.",
40
+ "expected_output": "Separate network and certificates, Authentication, Authorization, Virtual Host, Management, CLI, monitoring accounts, and verification steps. Keep secrets out of examples.",
41
+ "assertions": [
42
+ "It distinguishes Authentication from Authorization",
43
+ "It uses Virtual Hosts for isolation and permission scope",
44
+ "It checks TLS Peer Verification, Listeners, or certificate rotation",
45
+ "It contains no passwords, Tokens, Cookies, private keys, or personal information"
46
+ ]
47
+ },
48
+ {
49
+ "id": 5,
50
+ "prompt": "Design Prometheus monitoring and a RabbitMQ performance baseline.",
51
+ "expected_output": "Cover Cluster, Node, Queue, Connection, Channel, Publisher, Consumer, Stream, Alarm, and host metrics. Explain aggregated versus Per-object metrics, scrape frequency, and monitoring cost.",
52
+ "assertions": [
53
+ "It first defines SLO, message size, rate, processing time, and topology baselines",
54
+ "It includes actionable metrics such as Consumer Capacity, Queue Depth, Ack latency, or Confirm latency",
55
+ "It warns about high cardinality and output cost from Per-object or Detailed metrics",
56
+ "It does not invent universal monitoring thresholds without source evidence"
57
+ ]
58
+ },
59
+ {
60
+ "id": 6,
61
+ "prompt": "We are preparing a node-by-node RabbitMQ upgrade. List the checks before, during, and after the upgrade.",
62
+ "expected_output": "Order checks around Upgrade Path, Erlang version, Release Notes, Feature Flags, Plugins, backups, cluster health, capacity, per-node verification, and rollback.",
63
+ "assertions": [
64
+ "It requires confirmation of the upgrade path from the source to target version",
65
+ "It includes Erlang, stable Feature Flag, Plugin, and cluster-capacity checks",
66
+ "Each node has stop, upgrade, start, and health-verification steps",
67
+ "It explains when a Rolling Upgrade is not applicable"
68
+ ]
69
+ },
70
+ {
71
+ "id": 7,
72
+ "prompt": "A RabbitMQ Queue keeps growing. Find the possible performance bottlenecks.",
73
+ "expected_output": "Treat Queue backlog as a symptom. Isolate Publish, Routing, Storage, Network, Consumer, Prefetch, Ack, Redelivery, Alarm, and resource evidence. Label adding Consumers as a hypothesis to validate.",
74
+ "assertions": [
75
+ "It compares Publish Rate, Deliver Rate, Ack Rate, and Consumer Capacity",
76
+ "It checks unacknowledged messages, Prefetch, redelivery, and retry loops",
77
+ "It does not present adding Consumers as a universal solution",
78
+ "It lists Queue, Alarm, latency, and resource signals for post-fix verification"
79
+ ]
80
+ },
81
+ {
82
+ "id": 8,
83
+ "prompt": "Analyze why RabbitMQ Connection and Channel counts keep increasing.",
84
+ "expected_output": "Check lifecycle, creation and closure rates, File Descriptors, memory, reconnect spikes, Client distribution, and Connection or Channel Churn. Then propose reuse and capacity measures.",
85
+ "assertions": [
86
+ "It distinguishes Connection Churn from Channel Churn",
87
+ "It includes File Descriptor and memory evidence",
88
+ "It recommends long-lived resources and reasonable Publisher and Consumer separation",
89
+ "It does not produce connection-management code for a specific programming language"
90
+ ]
91
+ },
92
+ {
93
+ "id": 9,
94
+ "prompt": "Plan Kubernetes RabbitMQ operations from the Operator perspective.",
95
+ "expected_output": "Request Operator, RabbitMQ, Kubernetes, and CRD versions first. Then check storage, TLS, monitoring, Pod Disruption, upgrades, Operator logs, and RabbitMQ Broker health separately.",
96
+ "assertions": [
97
+ "It does not treat non-versioned Operator documentation as RabbitMQ 4.3 Broker documentation",
98
+ "It requires version and CRD compatibility checks",
99
+ "It covers storage, TLS, monitoring, upgrades, and troubleshooting",
100
+ "It does not provide unverified deletion, rebuild, or downtime commands"
101
+ ]
102
+ },
103
+ {
104
+ "id": 10,
105
+ "prompt": "Give me Python pika code for RabbitMQ automatic reconnect and Prefetch.",
106
+ "expected_output": "The request is outside the skill's language-specific Client API scope. Refuse to produce Python code, but provide language-neutral reconnect, Ack, Prefetch, duplicate-delivery, and verification semantics when useful, and point to the official Client Library documentation.",
107
+ "assertions": [
108
+ "It does not produce Python code or invent an API",
109
+ "It still explains language-neutral reliability and performance considerations",
110
+ "It clearly states the skill boundary and the need to consult official Client documentation"
111
+ ]
112
+ }
113
+ ]
114
+ }
@@ -0,0 +1,71 @@
1
+ # RabbitMQ Development Design
2
+
3
+ Use this reference for protocol and message-design decisions based on RabbitMQ 4.3. The primary sources are amqp.md, protocols.md, exchanges.md, queues.md, consumers.md, publishers/index.md, confirms.md, reliability.md, ttl.md, quorum-queues/index.md, and streams.md.
4
+
5
+ ## Design Order
6
+
7
+ Define business semantics before designing objects and settings:
8
+
9
+ 1. Define whether messages may be lost, whether duplicates are allowed, ordering requirements, retry limits, expiration policy, and the destination for failed processing.
10
+ 2. Select the protocol and Virtual Host, then confirm authentication, authorization, isolation, and network boundaries.
11
+ 3. Design Exchanges, Bindings, Routing Keys, and handling for unroutable messages.
12
+ 4. Choose a Queue, Quorum Queue, or Stream, then confirm durability, replication, retention, replay, and resource characteristics.
13
+ 5. Design Publisher Confirms, Consumer Acknowledgements, Prefetch, retry, and cancellation behavior.
14
+ 6. Define monitoring, alerts, failure recovery, and verification cases.
15
+
16
+ ## Exchanges and Routing
17
+
18
+ - Publishers send messages to an Exchange. The Exchange routes them to Queues according to Bindings and Routing Keys.
19
+ - direct is suitable for exact-key routing, fanout broadcasts to bound Queues, and topic routes by pattern. Select the type based on message topology and maintenance cost.
20
+ - When unroutable messages matter, explicitly choose Publisher-side reporting, an Alternate Exchange, or another observable failure path. Do not interpret a Confirm as proof that a Consumer will process the message.
21
+ - Exchanges, Bindings, and Queues are scoped to a Virtual Host. For cross-team or multi-tenant environments, confirm naming, permissions, and isolation boundaries first.
22
+ - When using Exchange-to-Exchange Bindings or an Alternate Exchange, include the additional routing layer and loop risks in verification.
23
+
24
+ ## Queue Declaration and Lifecycle
25
+
26
+ - A Queue's name, Durable, Exclusive, Auto-delete, and Arguments together determine lifecycle and resource semantics.
27
+ - Redeclaring an existing Queue with inconsistent properties causes a channel-level PRECONDITION_FAILED. Treat the declaration contract as a versioned interface in deployment tools and applications.
28
+ - Queue types, some Arguments, and other creation-time settings cannot be changed arbitrarily after creation. Prefer Policies for group settings that Policies can manage instead of scattering them across application declarations.
29
+ - RabbitMQ 4.3 has disabled the default declaration of non-Durable, non-Exclusive Classic Queues. For short-lived data, evaluate a Durable Queue with Queue TTL, an Exclusive Queue, or another suitable data structure rather than relying on deprecated behavior.
30
+ - An Exclusive Queue is tied to the Connection that declared it and is suitable for temporary state owned by one Client. It is commonly paired with a Broker-generated name to avoid fixed-name races during reconnects.
31
+ - A Durable Queue does not mean that every message survives a restart. Check message persistence at publish time together with Queue durability.
32
+
33
+ ## Reliability Boundaries
34
+
35
+ - A Publisher Confirm reports whether the Broker accepted and processed a publish. A Consumer Acknowledgement reports whether the Consumer completed delivery processing. They address failures in different directions.
36
+ - When Broker-side data safety matters, use an appropriate Durable Queue, persistent messages, Publisher Confirms, and a recovery workflow. Explicitly handle Confirm latency, negative responses, and Connection loss.
37
+ - A Consumer should not acknowledge before processing is complete. A disconnect, Channel closure, or Negative Acknowledgement can requeue unacknowledged messages, so processing must tolerate duplicate delivery.
38
+ - Requeue is not an infinite retry strategy. Set observable retry limits, delayed retry, or a Dead Letter path for persistent failures to avoid a Requeue Loop.
39
+ - Confirm, Ack, routing success, persistence success, and business processing success are different events. Represent them separately in state machines and audit records.
40
+
41
+ ## Queue, Quorum Queue, and Stream
42
+
43
+ - A general Queue uses Queue, Consumer, Ack, Prefetch, and TTL semantics. Confirm whether replication and cross-node fault tolerance are required.
44
+ - A Quorum Queue provides replication, data safety, and consistency. It requires Durable and introduces membership management, Leader election, Delivery Limit, resource use, and performance trade-offs. Select it only when those semantics are required.
45
+ - A Stream is an immutable append-only log with Offset, Retention, replay, and a different consumption model. It is not a renamed general Queue and has different connection and replication requirements.
46
+ - For global ordering, check whether a Stream fits. If using Queues, evaluate Single Active Consumer, a single Consumer, or partitioning, including the effect of requeue on ordering.
47
+ - Do not conclude that Quorum Queues are always safer or Streams are always faster without workload evidence. Test message size, rate, replication factor, disk, Consumer behavior, and target SLO.
48
+
49
+ ## Publisher and Consumer Behavior
50
+
51
+ - Messaging protocols generally expect long-lived Connections. Do not create and close a Connection for every publish or consume operation; evaluate Connection pooling when necessary.
52
+ - Connections and Channels consume Client and Broker resources. Reuse long-lived resources, close objects that are truly no longer needed, and monitor Connection or Channel Churn.
53
+ - If Publishers and Consumers share a Connection, Publisher Flow Control can affect Consumer manual acknowledgements. Separate the two Connection types when the requirements allow it.
54
+ - Prefetch controls the number of deliveries that have not completed. It affects throughput, latency, ordering, memory, and redelivery cost; adjust it only after measuring processing time, message size, Consumer count, and Ack behavior.
55
+ - Observe Consumer Capacity, unacknowledged message count, Queue Depth, Publish Rate, Deliver Rate, Ack Rate, and Confirm Latency together. Do not rely on Queue length alone.
56
+ - Polling Consumers add requests and latency without keeping delivery continuous. Unless single-message pulls are explicitly required, prefer continuous consumption.
57
+
58
+ ## Language-Neutral Output
59
+
60
+ For development questions, use topology, protocol fields, configuration semantics, failure states, and verification cases. Do not produce Java, Python, C#, Go, Ruby, or other language-specific Client calls. If the user needs an implementation in a language, direct them to the corresponding official Client Library documentation.
61
+
62
+ ### Sources
63
+
64
+ - [Exchanges](https://www.rabbitmq.com/docs/4.3/exchanges)
65
+ - [Queues](https://www.rabbitmq.com/docs/4.3/queues)
66
+ - [Consumers](https://www.rabbitmq.com/docs/4.3/consumers)
67
+ - [Publishers](https://www.rabbitmq.com/docs/4.3/publishers)
68
+ - [Consumer Acknowledgements and Publisher Confirms](https://www.rabbitmq.com/docs/4.3/confirms)
69
+ - [Reliability Guide](https://www.rabbitmq.com/docs/4.3/reliability)
70
+ - [Quorum Queues](https://www.rabbitmq.com/docs/4.3/quorum-queues)
71
+ - [Streams and Super Streams](https://www.rabbitmq.com/docs/4.3/streams)
@@ -0,0 +1,77 @@
1
+ # RabbitMQ Operations and Management
2
+
3
+ Use this reference for RabbitMQ 4.3 Broker management. The primary sources are configure.md, manage-rabbitmq.md, cli.md, management-cli.md, management/index.md, definitions.md, plugins.md, access-control.md, vhosts.md, policies.md, clustering.md, cluster-formation.md, networking.md, ssl/index.md, backup.md, snapshots.md, upgrade.md, rolling-upgrade.md, and production-checklist.md.
4
+
5
+ ## Operations Lifecycle
6
+
7
+ Treat inventory, change, verification, and rollback as the minimum closed loop for every operation:
8
+
9
+ 1. Inventory RabbitMQ, Erlang, Plugins, Feature Flags, node names, Cluster members, Listeners, Virtual Hosts, users, Policies, Queue types, and current alarms.
10
+ 2. Confirm the target, affected nodes, change window, backup or Definitions Export, rollback path, and success criteria.
11
+ 3. Run read-only checks first, then apply the smallest-scope change. Do not modify several unverified settings together.
12
+ 4. Recheck health, alarms, Listeners, routing, Publishers, Consumers, and critical business metrics. Preserve evidence of the change.
13
+
14
+ If data is insufficient, do not provide a one-step restart, deletion, clearing, or upgrade procedure. Request the environment version, topology, backup state, and maintenance-window information first.
15
+
16
+ ## Configuration and CLI
17
+
18
+ - Manage primary Broker settings through rabbitmq.conf or .conf files in the configuration directory. Use advanced.config only when the corresponding configuration format is required. For configuration questions, confirm the file location, load method, and node scope first.
19
+ - Use rabbitmqctl for service management and general Broker operations, rabbitmq-diagnostics for diagnostics and health checks, rabbitmq-plugins for Plugin management, and rabbitmq-queues for Queue-related administration. Treat the help output for the target version as authoritative for subcommands.
20
+ - rabbitmqadmin v2 uses the HTTP API for object management, health checks, Definitions, and some operational tasks. It does not replace the core CLI tools. Do not use the explicitly excluded rabbitmqadmin publish or rabbitmqadmin get production operations.
21
+ - Use restricted accounts for CLI, HTTP API, and Management UI. Never put passwords, Tokens, Cookies, private keys, or personal information in commands, documentation, logs, or examples.
22
+
23
+ ## Management, Permissions, and Isolation
24
+
25
+ - The Management Plugin provides a UI, HTTP API, metrics, and some management operations. Separate read-write management accounts from read-only monitoring accounts and grant only the required Virtual Host scope.
26
+ - A Virtual Host is a logical isolation boundary for Connections, Exchanges, Queues, Bindings, permissions, and some Policies. Do not use naming alone to separate tenants or systems with different lifecycles.
27
+ - Authentication and Authorization are separate controls. First confirm how a user is authenticated, then confirm what the user can do in the target Virtual Host.
28
+ - When enabling TLS, check the Server Certificate, Trust Store, Peer Verification, Hostname, Listener, certificate rotation, and Client compatibility together. A working TCP connection is not enough.
29
+ - Check inter-node and CLI tool authentication, DNS, time synchronization, Firewall rules, and required Listeners together. A working TLS Client connection does not prove that inter-node communication is secure or available.
30
+
31
+ ## Policies, Definitions, and Plugins
32
+
33
+ - Use a Policy to apply runtime settings to a group of Queues, Streams, or Exchanges. Policies suit settings that change or must remain consistent across a group.
34
+ - A Policy cannot change Queue or Stream types or other creation-time semantics. Handle those choices in topology versioning and migration plans.
35
+ - Definitions contain Users, Virtual Hosts, Queues, Exchanges, Bindings, Runtime Parameters, and other topology metadata. A Definitions Export can support topology backup, migration, or data seeding, but it is not a backup of Queue message contents.
36
+ - Before enabling a Plugin, confirm its support level, version compatibility, resource cost, Listeners, permissions, monitoring, and disablement rollback. Do not enable an unnecessary Plugin because the UI offers it.
37
+
38
+ ## Cluster and Node Maintenance
39
+
40
+ - Cluster membership, metadata, and Queue or Stream Replica scope are different concerns. Distinguish cluster membership, Definitions replication, and message-data replication.
41
+ - Cluster design must check Node Names, Peer Discovery, Erlang Cookie or equivalent authentication, DNS, Firewall rules, time synchronization, Leader or Replica placement, Client connection distribution, and quorum conditions.
42
+ - RabbitMQ 4.3 cluster documentation emphasizes odd node counts and discourages two-node clusters. Validate the node count against Queue or Stream replication factors, failure model, capacity, and maintenance strategy.
43
+ - Adding nodes does not automatically solve throughput problems. Metadata changes, cross-node routing, replication, Connection distribution, and data placement can add new costs.
44
+ - Before node maintenance, confirm that no object would lose quorum or a required Replica. Follow the applicable Queue, Stream, and upgrade documentation. Do not stop a node without health evidence.
45
+
46
+ ## Backup, Upgrade, and Rollback
47
+
48
+ - Treat Definitions, Broker configuration, certificates, and message data as separate backup targets. Confirm the recovery scope and recovery-test result for each backup type.
49
+ - Use a Rolling Upgrade only when the source and target versions, Erlang versions, Feature Flags, Plugins, cluster health, and capacity conditions all qualify.
50
+ - Before an upgrade, read the Release Notes from the current version through the target version. Check the Upgrade Path, Erlang requirements, stable Feature Flags, package dependencies, cluster capacity, backups, and rollback plan.
51
+ - Upgrade nodes one at a time: stop, upgrade, start, and verify each node. At every step, check cluster state, Queue or Stream safety, Listeners, Publishers, Consumers, and alarms.
52
+ - Enable new Feature Flags or remove compatibility settings only after every verification condition passes. Keep a feasible path back to the last verified version.
53
+
54
+ ## Production Minimum Checks
55
+
56
+ - Use durable storage and check free disk, storage isolation, filesystem behavior, I/O capability, and backup strategy.
57
+ - Check RAM, Memory Alarms, Disk Alarms, File Descriptors, CPU, network throughput, Connections, Channels, Queues, message rates, and log collection.
58
+ - Use TLS, least privilege, restricted Firewalls, non-public Management endpoints, rotatable certificates, and monitoring configuration without secrets.
59
+ - Have applications reuse long-lived Connections and Channels. Avoid high Connection or Channel Churn, unrestricted polling, and unbounded retries.
60
+ - Create executable verification cases for health checks, readiness, alarms, capacity trends, failure recovery, and upgrade rollback.
61
+
62
+ ## Kubernetes Operator
63
+
64
+ Kubernetes Operator documentation is in the non-versioned kubernetes/operator/ path. For Operator questions, confirm the versions of the Operator, RabbitMQ Cluster Operator, Topology Operator, Kubernetes, and RabbitMQ first. Verify CRDs, storage, TLS, monitoring, Pod Disruption, upgrades, and Operator logs separately. Do not treat Operator documentation as a replacement for versioned RabbitMQ 4.3 Broker documentation.
65
+
66
+ ### Sources
67
+
68
+ - [Configuration](https://www.rabbitmq.com/docs/4.3/configure)
69
+ - [Command Line Tools](https://www.rabbitmq.com/docs/4.3/cli)
70
+ - [Management Plugin](https://www.rabbitmq.com/docs/4.3/management)
71
+ - [Authentication, Authorization, and Access Control](https://www.rabbitmq.com/docs/4.3/access-control)
72
+ - [Virtual Hosts](https://www.rabbitmq.com/docs/4.3/vhosts)
73
+ - [Policies](https://www.rabbitmq.com/docs/4.3/policies)
74
+ - [Clustering Guide](https://www.rabbitmq.com/docs/4.3/clustering)
75
+ - [TLS Support](https://www.rabbitmq.com/docs/4.3/ssl)
76
+ - [Rolling Upgrade](https://www.rabbitmq.com/docs/4.3/rolling-upgrade)
77
+ - [Production Deployment Guidelines](https://www.rabbitmq.com/docs/4.3/production-checklist)
@@ -0,0 +1,98 @@
1
+ # RabbitMQ Performance, Capacity, and Monitoring
2
+
3
+ Use this reference for RabbitMQ 4.3 performance analysis. The primary sources are production-checklist.md, monitoring/index.md, prometheus/index.md, memory.md, memory-use/index.md, connections/index.md, channels/index.md, flow-control.md, consumer-prefetch.md, publishers/index.md, queues.md, quorum-queues/index.md, streams.md, and alarms.md.
4
+
5
+ ## Establish a Comparable Baseline
6
+
7
+ Before changing settings, record a stable period of:
8
+
9
+ - Target SLOs: Publish latency, Confirm latency, Consumer latency, acceptable Queue Depth, acceptable redelivery rate, and availability.
10
+ - Workload: message-size distribution, Publish Rate, Deliver Rate, Ack Rate, Confirm Rate, Consumer count, processing time, retries, and traffic-spike patterns.
11
+ - Topology: protocol, Virtual Host, Exchange, Binding, Queue type, Durable, TTL, Dead Lettering, replication factor, node count, and Client connection location.
12
+ - Broker resources: CPU, RAM, Memory Breakdown, disk capacity, disk latency and throughput, File Descriptors, network throughput, Connections, Channels, Queues, and alarms.
13
+ - Application behavior: Connection or Channel Churn, Prefetch, unacknowledged messages, polling, message batching, failed reconnects, redelivery, and Consumer Capacity.
14
+
15
+ Without a baseline, you cannot tell whether a change improved the system or moved the bottleneck. Mark the data as insufficient instead of providing fixed values.
16
+
17
+ ## Bottleneck Isolation Order
18
+
19
+ Inspect the end-to-end path before adjusting a parameter:
20
+
21
+ 1. Can the Publisher establish a Connection, complete routing, and receive a Confirm?
22
+ 2. Do Exchanges and Bindings cause unroutable messages, extra routing, or imbalance?
23
+ 3. Are Queue storage, disk, replication, TTL, Priority, or message indexes the cost driver?
24
+ 4. Are Connections, Channels, Flow Control, or the network limiting transport?
25
+ 5. Does the Consumer have enough processing capacity, suitable Prefetch, appropriate Ack timing, and observable failure retries?
26
+ 6. Is the Broker in a Memory Alarm, Disk Alarm, or another resource-protection state?
27
+
28
+ If Queue Depth is growing, the cause may be Consumer processing speed, a Publisher spike, routing errors, a retry loop, disk, replication, or a Connection problem. Treat adding Consumers as a hypothesis to validate, not a conclusion.
29
+
30
+ ## Priority Adjustments
31
+
32
+ ### Connections and Channels
33
+
34
+ - Prefer long-lived Connections and Channels. Do not create a Connection for every message.
35
+ - Observe Connection Count, Channel Count, creation and closure rates, File Descriptors, memory, and network resources.
36
+ - When requirements allow, separate Publishers and Consumers onto different Connections so Publisher Flow Control does not delay Consumer acknowledgements.
37
+ - For large Connection populations, also check node distribution, Listeners, operating-system limits, TLS cost, and Client reconnect storms.
38
+
39
+ ### Publishers
40
+
41
+ - Assess data safety through Publisher Confirm latency, negative responses, retries, and Connection-loss behavior, not only the return of a Publish call.
42
+ - Streaming Confirms, Batch Publishing, and Publish-and-Wait have different latency, throughput, and memory properties. Select one according to reliability requirements, then measure it with the workload.
43
+ - Check Unroutable Message metrics and Exchange Bindings. A Queue without a Consumer or a received Confirm does not prove that business processing completed.
44
+ - When a Publisher is blocked by a Resource Alarm or Flow Control, address Broker resources and downstream consumption before increasing concurrency.
45
+
46
+ ### Consumers
47
+
48
+ - Adjust Prefetch according to message size, processing time, Ack latency, Consumer count, ordering requirements, and memory limits.
49
+ - Observe Consumer Capacity, Ready Messages, Unacknowledged Messages, Deliver Rate, Ack Rate, Redelivery Rate, and processing latency.
50
+ - Prefetch that is too high can increase unacknowledged messages and memory use; Prefetch that is too low can limit concurrency. Compare throughput, latency, memory, and redelivery after every change.
51
+ - Do not replace continuous consumption with polling for performance. Polling usually adds request cost and empty-pull latency.
52
+ - If ordering is the priority, evaluate Single Active Consumer, a single Consumer, or partitioned Queues. If retries are the priority, evaluate Delivery Limit, delayed retry, and Dead Lettering.
53
+
54
+ ### Queue Types and Data Paths
55
+
56
+ - Classic Queue, Quorum Queue, and Stream have different data models, replication, storage, ordering, retention, and consumption behavior. Select by semantics first, then run workload benchmarks.
57
+ - Quorum Queue replication, WAL, Segment, Snapshot, Leader, Rebalance, disk, and resource use affect performance. Adjust performance settings only when you observe the corresponding bottleneck.
58
+ - Stream Retention, Replica, Leader, Offset, Deduplication, Stream Connection, and Super Stream partitioning change the cost model. Do not apply general Queue tuning assumptions to Streams.
59
+ - TTL, Length Limit, Priority, Dead Lettering, and Requeue change Queue workload. Include Priority count, expiration scanning, and repeated enqueueing in resource estimates.
60
+
61
+ ## Memory, Disk, and Alarms
62
+
63
+ - Use Memory Breakdown to distinguish Connections, Queues, Message Store Index, Plugins, Management Stats, Binaries, Erlang Processes, and other categories. Do not inspect only operating-system RSS.
64
+ - Memory Alarms and Disk Alarms block publishing Connections, and cluster alarms can affect the whole cluster. First identify the alarm source node, consumption rate, remaining disk, message Paging, and resource trends.
65
+ - The memory Threshold is a protection point that triggers publishing throttling, not a hard limit. In containers or Kubernetes, confirm the effective cgroup limit and Broker configuration.
66
+ - Examine disk capacity, disk latency, free space, Queue storage, Quorum Segments, and Snapshots together. A Disk Alarm cannot be solved simply by lowering a limit.
67
+ - Reduce input, restore consumption, handle unnecessary backlog according to the data-retention and recovery plan, or add suitable resources first. Then reassess the threshold; raising it must not conceal an environment without capacity.
68
+
69
+ ## Monitoring Design
70
+
71
+ - Combine Prometheus, the Management Plugin, the HTTP API, CLI Observer, logs, and host metrics. A health check cannot replace trend monitoring.
72
+ - At minimum distinguish Cluster, Node, Queue, Connection, Channel, Publisher, Consumer, Stream, Alarm, and application-level metrics.
73
+ - Aggregated metrics suit high-frequency and large-scale collection. Per-object or Detailed metrics can produce high output volume and cardinality; limit their scope and frequency.
74
+ - Monitoring itself consumes CPU, memory, HTTP, Management Stats, and storage resources. Set collection frequency and object scope according to capacity and troubleshooting needs.
75
+ - Thresholds in Grafana or Prometheus charts are not universal RabbitMQ constants. Workload, Queue type, message size, and SLO affect a reasonable range.
76
+
77
+ ## Capacity and Experiment Rules
78
+
79
+ Record the following for every performance experiment:
80
+
81
+ 1. One primary variable, such as Prefetch, Consumer count, batch size, Connection distribution, or Queue type.
82
+ 2. Fixed message size, Publish Rate, Consumer processing time, node resources, and test duration.
83
+ 3. Success criteria, such as Confirm p95, Consumer p95, Queue Depth, CPU, RAM, disk latency, redelivery rate, and alarm count.
84
+ 4. Failure criteria, rollback settings, data-cleanup method, and rerun steps.
85
+
86
+ Treat results as observations for the same topology and workload only. Do not present throughput, latency, or the best parameter from a single benchmark as a universal RabbitMQ capability.
87
+
88
+ ### Sources
89
+
90
+ - [Production Deployment Guidelines](https://www.rabbitmq.com/docs/4.3/production-checklist)
91
+ - [Monitoring](https://www.rabbitmq.com/docs/4.3/monitoring)
92
+ - [Prometheus and Grafana](https://www.rabbitmq.com/docs/4.3/prometheus)
93
+ - [Reasoning About Memory Usage](https://www.rabbitmq.com/docs/4.3/memory-use)
94
+ - [Connections](https://www.rabbitmq.com/docs/4.3/connections)
95
+ - [Channels](https://www.rabbitmq.com/docs/4.3/channels)
96
+ - [Flow Control](https://www.rabbitmq.com/docs/4.3/flow-control)
97
+ - [Consumer Prefetch](https://www.rabbitmq.com/docs/4.3/consumer-prefetch)
98
+ - [Memory and Disk Alarms](https://www.rabbitmq.com/docs/4.3/alarms)
@@ -0,0 +1,56 @@
1
+ # RabbitMQ Sources and Scope
2
+
3
+ ## Default Version
4
+
5
+ Use the stable RabbitMQ 4.3 documentation as the default knowledge baseline for this skill:
6
+
7
+ - Source directory: rabbitmq-website/versioned_docs/version-4.3
8
+ - Source repository: rabbitmq-website
9
+ - Source snapshot: 2b61ea8d840a42e1ba46ee2f1fdf0f9aeec63bd9
10
+ - In the same source repository, docs is the 4.4 development version, not the default version for this skill.
11
+ - versioned_docs/version-4.2, versioned_docs/version-4.1, versioned_docs/version-4.0, and versioned_docs/version-3.13 are older versions; switch to them only when the user explicitly specifies one.
12
+
13
+ The source repository README identifies 4.3 as the stable documentation path and docs as the 4.4 development version. Because versioned documentation shares the website repository, use the correct version directory instead of relying on docs alone.
14
+
15
+ ## Topic Map
16
+
17
+ | Topic | Primary source paths |
18
+ | :--- | :--- |
19
+ | Protocols and message semantics | amqp.md, protocols.md, exchanges.md, queues.md, consumers.md, publishers/index.md, confirms.md, reliability.md |
20
+ | Queue types and data structures | classic-queues.md, quorum-queues/index.md, streams.md, stream.md, stream-connections.md, stream-filtering.md |
21
+ | Message lifecycle | ttl.md, dlx.md, nack.md, consumer-prefetch.md, consumer-priority.md, flow-control.md |
22
+ | Broker configuration and management | configure.md, manage-rabbitmq.md, cli.md, management-cli.md, management/index.md, plugins.md, definitions.md |
23
+ | Security and isolation | access-control.md, vhosts.md, ssl/index.md, ldap.md, oauth2.md, networking.md |
24
+ | Clusters and maintenance | clustering.md, cluster-formation.md, feature-flags/index.md, backup.md, snapshots.md, upgrade.md, rolling-upgrade.md |
25
+ | Monitoring and performance | monitoring/index.md, prometheus/index.md, production-checklist.md, memory.md, memory-use/index.md, connections/index.md, channels/index.md, alarms.md, disk-alarms.md, limits.md |
26
+ | Troubleshooting | troubleshooting/index.md, troubleshooting-networking.md, troubleshooting-ssl.md, troubleshooting-oauth2.md |
27
+ | Kubernetes operations | Non-versioned kubernetes/operator/ |
28
+
29
+ ## Explicit Exclusions
30
+
31
+ - Do not include Java, Python, C#, Go, Ruby, or other language examples from tutorials/ and client-libraries/. Retain only protocol, topology, reliability, and operations semantics.
32
+ - Do not include blog/. The source README states that Blog content is outside the RabbitMQ documentation license scope and that Blog articles may not be redistributed.
33
+ - Do not include Docusaurus, React, CSS, website components, deployment infrastructure, or ci/; these are not RabbitMQ Broker development, operations, or performance knowledge.
34
+ - Do not use rabbitmqadmin publish or rabbitmqadmin get as production operations. The source Agent Instructions explicitly state that these commands are intentionally omitted.
35
+ - Do not copy the entire website. References are concise knowledge rewritten by topic; source paths provide traceability and verification.
36
+
37
+ ## License and Attribution
38
+
39
+ The RabbitMQ website README states that the documentation is available under the Apache License 2.0 and Mozilla Public License 2.0. Users may choose either license subject to its terms. The README also excludes Blog content and states that Broadcom retains its intellectual property. This skill summarizes the documentation, preserves the source repository, version directory, commit identifier, and official documentation links, and does not treat Blog or other excluded material as part of the documentation license.
40
+
41
+ ## Freshness Policy
42
+
43
+ The source snapshot provides a traceable baseline but does not guarantee current RabbitMQ behavior. Consult current official documentation or the target environment's tool help before answering questions about:
44
+
45
+ - Latest versions, support matrices, Release Notes, Feature Flags, Deprecated Features, and upgrade paths.
46
+ - CLI subcommands, arguments, configuration keys, defaults, ports, limits, Plugin support, and Kubernetes Operator behavior.
47
+ - TLS, OAuth, LDAP, certificates, authentication, CVEs, security advisories, and third-party component status.
48
+ - Performance numbers, capacity, latency, monitoring thresholds, and recommendations for a specific host or container environment.
49
+
50
+ If current-source verification cannot be completed, state explicitly that the answer uses the 4.3 snapshot and list changeable items as pending verification.
51
+
52
+ ### Official Documentation
53
+
54
+ - [RabbitMQ 4.3 documentation](https://www.rabbitmq.com/docs/4.3)
55
+ - [RabbitMQ documentation home](https://www.rabbitmq.com/docs)
56
+ - [RabbitMQ website repository](https://github.com/rabbitmq/rabbitmq-website)
@@ -0,0 +1,84 @@
1
+ # Layered RabbitMQ Troubleshooting
2
+
3
+ Use this reference as a language-neutral investigation process based on RabbitMQ 4.3 troubleshooting documentation. The primary sources are troubleshooting/index.md, troubleshooting-networking.md, troubleshooting-ssl.md, troubleshooting-oauth2.md, monitoring/index.md, memory-use/index.md, connections/index.md, channels/index.md, publishers/index.md, alarms.md, and flow-control.md.
4
+
5
+ ## Troubleshooting Loop
6
+
7
+ 1. Describe observable symptoms: affected Virtual Host, Queue, Connection, Node, time range, error messages, latency, and affected operations.
8
+ 2. Confirm the version and change context: RabbitMQ, Erlang, Plugins, Feature Flags, configuration, deployment, certificates, network, and recent changes.
9
+ 3. Collect read-only evidence: health checks, alarms, Listeners, logs, Cluster status, Queue metrics, Connections, Channels, Publishers, Consumers, memory, and disk.
10
+ 4. Isolate by layer: Client or network, Listener, TLS, Authentication, Authorization, Cluster, Resource Alarm, Exchange routing, Queue, Publisher, Consumer, or application processing.
11
+ 5. Change only after the failing layer is supported by evidence. Reproduce first in a small scope or non-production environment and record rollback settings.
12
+ 6. Verify again using the original symptom, health status, metrics, logs, and business outcome. Confirm that the failure was not moved to another layer.
13
+
14
+ A report that only says very slow, cannot connect, or Queue is growing lacks the time, scope, version, and metrics required for a safe root-cause determination.
15
+
16
+ ## Symptom-Based Checks
17
+
18
+ ### Publisher Blocked or Throughput Reduced
19
+
20
+ Check Memory Alarm, Disk Alarm, Flow Control, disk latency, Queue backlog, Consumer Ack rate, Publisher Confirm latency, and network first. A Resource Alarm blocks publishing Connections, and a cluster alarm can affect multiple nodes.
21
+
22
+ Do not begin by raising Memory Threshold, Disk Threshold, or Publisher concurrency. Reduce input or restore downstream consumption, identify the source of memory, disk, and message backlog, and then decide whether capacity or configuration changes are justified.
23
+
24
+ ### Queue Backlog or Consumer Falling Behind
25
+
26
+ Check in order:
27
+
28
+ - Whether Exchanges and Bindings route messages to the expected Queue.
29
+ - Whether Publisher Rate remains above Deliver Rate or Ack Rate.
30
+ - Consumer Capacity, Consumer count, processing time, Prefetch, and unacknowledged messages.
31
+ - Redelivery, Negative Acknowledgement, Retry, Dead Lettering, and Requeue Loops.
32
+ - Queue type, replication, disk, resource alarms, and cross-node data placement.
33
+
34
+ Add Consumers only when Consumer processing capacity or concurrency is a proven bottleneck. If the bottleneck is Publisher input, disk, routing, or Requeue, adding Consumers can worsen the problem.
35
+
36
+ ### Routing or Message-Loss Concern
37
+
38
+ Confirm the Virtual Host, Exchange name, Exchange type, Bindings, Routing Key, Queue state, and Unroutable Message handling used by the Publisher. Check separately whether the message was routed, the Broker accepted the publish, the Publisher received a Confirm, and the Consumer completed business processing.
39
+
40
+ ### Repeated Connection or Channel Interruptions
41
+
42
+ Distinguish DNS, TCP Listener, Firewall, TLS, Authentication, Authorization, Heartbeat, Broker-initiated closure, Resource Alarms, and Client reconnect behavior first. Check Connection or Channel Churn, File Descriptors, Protocol Exceptions in logs, node resources, and reconnect spikes.
43
+
44
+ Do not attribute every disconnect to Heartbeat. Verify low Heartbeat settings, network congestion, host load, TLS certificates, permissions, and Broker closure reasons separately.
45
+
46
+ ### Memory or Disk Rising Continuously
47
+
48
+ Use Memory Breakdown to separate Connections, Queues, Message Store, Plugins, Management Stats, Binaries, Processes, and other categories. Compare them with Queue Depth, unacknowledged messages, message size, Connection count, Channel count, Plugins, and monitoring frequency.
49
+
50
+ For disk troubleshooting, check the Broker database partition, free space, message Paging, Queue or Quorum Segments, Snapshots, logs, and other host processes together. Do not inspect only total container filesystem capacity.
51
+
52
+ ### Unhealthy Cluster or Replicas
53
+
54
+ Confirm Node Names, Peer Discovery, inter-node authentication, DNS, time synchronization, Firewall rules, Feature Flags, Metadata Store, Queue or Stream members, Leaders, quorum, and current maintenance actions. Before stopping a node, identify which objects would lose an online quorum.
55
+
56
+ A Client connection to one node does not prove cluster health. Check cluster membership, alarms, Replicas, and the state of critical Queues or Streams as well.
57
+
58
+ ## CLI and Evidence Rules
59
+
60
+ - When rabbitmqctl, rabbitmq-diagnostics, rabbitmq-plugins, or rabbitmq-queues commands are needed, read help for the target installation first and use syntax appropriate for the version.
61
+ - Use rabbitmqadmin only for management, health, Definitions, or metric operations covered by the source documentation. Never recommend rabbitmqadmin publish or rabbitmqadmin get.
62
+ - Mask Hostnames, IP addresses, users, Tokens, Cookies, certificates, and message contents before reporting command output. Never paste real secrets into documentation or Tickets.
63
+ - Start with read-only checks such as status, alarms, Listeners, metrics, logs, and object lists. Evaluate clearing, deletion, requeue, Connection closure, node shutdown, and configuration changes as separate actions.
64
+ - Record the expected observation, actual observation, supported or eliminated hypothesis, and next check for every troubleshooting step.
65
+
66
+ ## Rollback and Verification
67
+
68
+ After a change, verify at least:
69
+
70
+ - The original error no longer appears, with no new Protocol Exception, Authentication Failure, or TLS Failure.
71
+ - Alarms and Flow Control are cleared or show a clear improving trend.
72
+ - Publish, Route, Confirm, Deliver, Ack, Redelivery, and Consumer Capacity return to the expected range.
73
+ - Queue Depth, unacknowledged messages, memory, disk, Connections, Channels, and network do not become a new anomaly.
74
+ - Cluster, Queue, or Stream Replicas, Leaders, Listeners, Health Checks, and Readiness meet the deployment target.
75
+ - Rollback settings, backups, change records, and follow-up monitoring ownership are confirmed.
76
+
77
+ ### Sources
78
+
79
+ - [Troubleshooting Guidance](https://www.rabbitmq.com/docs/4.3/troubleshooting)
80
+ - [Troubleshooting Network Connectivity](https://www.rabbitmq.com/docs/4.3/troubleshooting-networking)
81
+ - [Monitoring](https://www.rabbitmq.com/docs/4.3/monitoring)
82
+ - [Reasoning About Memory Usage](https://www.rabbitmq.com/docs/4.3/memory-use)
83
+ - [Publishers](https://www.rabbitmq.com/docs/4.3/publishers)
84
+ - [Memory and Disk Alarms](https://www.rabbitmq.com/docs/4.3/alarms)