rabbitmq について
RabbitMQ 開発者向けの基礎知識スキルです。メッセージルーティング、キュー設定、本番運用上の注意点、トラブルシューティングを扱い、追加ドキュメントへの参照も示します。
主な機能
- 01エクスチェンジ、キュー、バインディングの解説
- 024 種類のエクスチェンジによるルーティング
- 03キュー設定とメッセージ有効期限の紹介
- 04アンチパターンと対策の提示
- 05よくある問題の調査手順
活用シーン
- 01メッセージルーティングとキュー構成の設計
- 02RabbitMQ の本番設定の確認
- 03滞留や未ルーティングメッセージの調査
MCP 対応
README では、RabbitMQ の詳細ドキュメント取得先として mcp__documentation__fetch_docs に言及しています。スキル自体の MCP 接続方法は説明されていません。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ claude-dev-suite/ claude-dev-suite --skill rabbitmqインストール後、Claude Code で/rabbitmqを入力して読み込まれたか確認します。
同梱ファイルadvanced.md
詳細
RabbitMQ の基本知識
全リファレンス:プロデューサーパターン(Node.js、Java、Python、Go)、コンシューマーパターン、セキュリティ設定、高可用性のセットアップについては、advanced.md を参照してください。
詳細な知識:包括的なドキュメントについては、technology:
rabbitmqを指定してmcp__documentation__fetch_docsを使用してください。
クイックスタート(Docker)
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- "5672:5672" # AMQP
- "15672:15672" # Management UI
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
基本概念
| 概念 | 説明 |
|---|---|
| Exchange | メッセージをキューにルーティングします |
| Queue | メッセージを保存するバッファーです |
| Binding | エクスチェンジとキューを結び付けるルールです |
| Routing Key | ルーティングに使用するメッセージ属性です |
アーキテクチャ
Producer ──▶ Exchange ──binding──▶ Queue ──▶ Consumer
│
├── direct (exact routing key match)
├── topic (pattern matching)
├── fanout (broadcast to all)
└── headers (header-based routing)
エクスチェンジの種類
| 種類 | ルーティング | ユースケース |
|---|---|---|
| direct | キーの完全一致 | タスクキュー、RPC |
| topic | パターン(*.#) | イベントのルーティング |
| fanout | すべてにブロードキャスト | 通知 |
| headers | ヘッダーの一致 | 複雑なルーティング |
# Topic exchange patterns
order.* → matches order.created, order.updated
order.# → matches order.created, order.item.added
*.created → matches order.created, user.created
キューの設定
| 引数 | 説明 |
|---|---|
x-message-ttl | メッセージの有効期限(ms) |
x-max-length | キューの最大サイズ |
x-dead-letter-exchange | 拒否されたメッセージ用の DLX |
x-dead-letter-routing-key | DLQ のルーティングキー |
x-queue-type | classic、quorum、stream |
このスキルを使用すべきでない場合
- リプレイを伴うイベントストリーミング — Kafka は永続ログを提供します
- 極めて高いスループット(>100k msg/s) — Kafka または Pulsar のほうがスケーラビリティに優れています
- AWS ネイティブのアーキテクチャ — SQS のほうが統合に適しています
- 軽量なメッセージング — NATS のほうが運用がシンプルです
- JMS への準拠が必要 — ActiveMQ は JMS API を提供します
アンチパターン
| アンチパターン | 問題点 | 解決策 |
|---|---|---|
| プリフェッチ制限がない | コンシューマーが過負荷になります | prefetch を 10-50 に設定します |
| HA 環境での classic キュー | ノード障害時にデータが失われます | quorum キューを使用します |
| DLX が設定されていない | 不正なメッセージが永久にループします | デッドレターエクスチェンジを設定します |
| 自動 ACK | クラッシュ時にメッセージが失われます | 手動 ACK を使用します |
| パブリッシャー確認がない | メッセージが通知されずに失われます | 重要なメッセージでは確認を有効にします |
トラブルシューティングのクイックガイド
| 問題 | 主な原因 | 対処法 |
|---|---|---|
| メッセージが滞留する | コンシューマーの処理が遅い、または停止している | コンシューマー数と処理状況を確認します |
| メモリー使用量が多い | ACK されていないメッセージが多すぎます | プリフェッチを減らし、コンシューマーを追加します |
| メッセージがルーティングされない | ルーティングキーが誤っています | エクスチェンジとキューのバインディングを確認します |
| メッセージが重複する | ACK の前にコンシューマーがクラッシュしました | 冪等な処理を実装します |
| パブリッシャー確認がタイムアウトする | ブローカーに過負荷がかかっています | 発行レートを下げます |
本番環境チェックリスト
- TLS/SSL を有効化
- 最小権限のユーザーを設定
- 分離のために仮想ホストを使用
- HA 用に quorum キューを使用
- デッドレターエクスチェンジを設定
- メッセージ TTL を設定
- プリフェッチ制限を設定
- パブリッシャー確認を有効化
- 監視ダッシュボードを用意
- アラートを設定
リファレンスドキュメント
利用可能なトピック:basics、exchanges、queues、consumers、clustering、production
コメント
Markdown 対応