MeWrite Docs

RabbitMQ: Connection closed unexpectedly

RabbitMQ接続エラーの解決方法

概要

RabbitMQサーバーとの接続が予期せず閉じられた場合に発生するエラーです。

エラーメッセージ

ConnectionClosedByBroker: (403) ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN

原因

  1. 認証失敗: ユーザー名・パスワードが不正
  2. 権限不足: vhostへのアクセス権がない
  3. 接続制限: 最大接続数超過
  4. ハートビートタイムアウト: ネットワーク切断

解決策

1. ユーザーと権限の確認

1
2
3
4
5
6
# ユーザー一覧
rabbitmqctl list_users

# ユーザー追加
rabbitmqctl add_user myuser mypassword
rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*"

2. Node.js接続(amqplib)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
const amqp = require('amqplib');

async function connect() {
  const connection = await amqp.connect({
    hostname: 'localhost',
    port: 5672,
    username: 'guest',
    password: 'guest',
    vhost: '/',
    heartbeat: 60
  });

  connection.on('error', (err) => {
    console.error('Connection error:', err);
  });

  connection.on('close', () => {
    console.log('Connection closed, reconnecting...');
    setTimeout(connect, 5000);
  });
}

3. Python接続(pika)

1
2
3
4
5
6
7
8
9
import pika

credentials = pika.PlainCredentials('guest', 'guest')
parameters = pika.ConnectionParameters(
    host='localhost',
    credentials=credentials,
    heartbeat=600
)
connection = pika.BlockingConnection(parameters)

よくある間違い

  • guestユーザーはlocalhostからのみ接続可能
  • ハートビート間隔が短すぎる

最終更新: 2025-12-09