Skip to main content

 

 

 

 
Language:

 

 

 

 
 
OutSystems

RabbitMQの管理とトラブルシューティング

This article applies to:OutSystems 11

以下のセクションに示されているRabbitMQのデフォルトのバッチスクリプトフォルダは以下のとおりです。

C:\<OutSystemsのインストールフォルダ>\thirdparty\RabbitMQ Server\rabbitmq_server-<バージョン>\sbin

必要に応じて調整してください。

RabbitMQ管理プラグインを有効にする

RabbitMQを監視および管理する最適な方法は、インストールに含まれている管理プラグインを使用することです。これを有効にするには、以下の手順を実行します。

  1. コマンドラインコンソールを開き(管理者として実行)、RabbitMQのバッチスクリプトフォルダに移動します。

  2. 以下のコマンドを実行します。
    rabbitmq-plugins.bat enable rabbitmq_management

管理ダッシュボードがhttp://localhost:15672/で利用できるようになります。サービスの構成時に設定された管理者の資格情報を使用してログインできます。

サービスのステータスを確認する

RabbitMQから提供されるCLIツールを使用して、サービスのステータスを確認できます。

以下の手順を実行します。

  1. コマンドラインコンソールを開き(管理者として実行)、RabbitMQのバッチスクリプトフォルダに移動します。

  2. 以下のコマンドを実行します。
    rabbitmqctl.bat status

トラブルシューティング

サービスのインストールに関する問題

キャッシュ無効化サービス(基盤テクノロジーとしてRabbitMQを使用)のインストール中に問題が見つかった場合は、以下のトラブルシューティングの提案に従います。

Erlangがマシンに正しくインストールされているかどうかを確認する

A)以下の手順を実行し、インストールされているErlangのバージョンを確認します。

  1. 以下のコマンドを実行してErlangシェルを実行します。
    C:\<OutSystemsのインストールフォルダ>\thirdparty\Erlang\bin\werl.exe

  2. 画面上部のバージョン情報を確認します。この情報は以下と一致している必要があります。
    Erlang/OTP 20 [erts-9.3] [64-bit]

B)ERLANG_HOME環境変数が定義され、Erlangのインストールフォルダを指していることを確認します。

ErlangのCookieを確認する

A)%USERPROFILE%とWindowsのシステムプロファイルフォルダ(C:\Windows\System32\config\systemprofileC:\Windows\SysWOW64\config\systemprofileC:\Windows\SysNative\config\systemprofile)にある.erlang.cookieファイルが同期していること、つまり、それらのファイルの内容が完全に一致していることを確認します。

一致していない場合は、一方のファイルの内容をもう一方のファイルにコピーしてその内容を置き換えます。

RabbitMQサービスのステータスを確認する

A)Task Managerを開いて、RabbitMQサービスがインストールされて動作していることを確認します。

動作していない場合は、以下の手順を実行します。

  1. コマンドラインコンソールを開き(管理者として実行)、RabbitMQのバッチスクリプトフォルダに移動します。

  2. 以下のコマンドを実行して、現在実行中のサービスを削除し、新しいサービスをインストールして開始します。
    rabbitmq-service.bat remove
    rabbitmq-service.bat install
    rabbitmq-service.bat start

RabbitMQのポートがブロックされているかどうかを確認する

A)複数のフロントエンドサーバーを使用している場合は、RabbitMQで使用されるポート(デフォルトではポート5672)がファイアウォールによってブロックされていないことを確認します。

RabbitMQサービスで使用されるポートを変更するには、以下の手順を実行します。

  1. RABBITMQ_NODE_PORT環境変数を目的のポート番号に設定します。
  2. RabbitMQサービスを再インストールし、前の問題(「RabbitMQサービスのステータスを確認する」)で説明した同じコマンドを実行します。
ログでエラーを確認する
A)RabbitMQサービスのログファイルにエラーがあるかどうかを確認します。ログファイルは%ALLUSERSPROFILE%\RabbitMQ\logに保存されています。

一般的な問題

RabbitMQサービスが開始されない

A)Configuration Toolを実行しているユーザーが%ALLUSERSPROFILE%フォルダにアクセスできることを確認します。

B)%ALLUSERSPROFILE%フォルダがネットワーク共有されている場合は、「Workstation」Windowsサービスが実行されていることを確認します。

C)ログファイル(%ALLUSERSPROFILE%\RabbitMQ\logにある)で致命的なエラーを確認します。

RabbitMQサービスが開始時にクラッシュする

説明: %ALLUSERSPROFILE%\RabbitMQフォルダ内の「crash.log」ファイルに「schema_integrity_check_failed」例外が含まれています。

注記: この問題を解決するために以下の提案を実行すると、耐久性のある交換とキューや、永続的なメッセージはすべて消去されます。これが特に重要になるのは、RoutbitMQをOutSystems以外の目的で使用している場合です。

A)%ALLUSERSPROFILE%\RabbitMQ\dbフォルダの内容を削除し、サービスを再起動します。Configuration Tool([Cache]タブ)にある「Create/Upgrade Service」操作を使用して、再起動を実行できます。

RabbitMQサービスがインストールされておらず、そのインストール/削除手順でエラーがスローされる

説明: RabbitMQサービスがWindowsサービスリストに表示されていません。rabbitmq-service.bat installまたはrabbitmq-service.bat removeを実行すると、「The handle is invalid」というエラーがスローされます。

A)HKEY_LOCAL_MACHINE\SOFTWARE\Ericsson\Erlang\ErlSrv\1.1\RabbitMQにあるRabbitMQ変数をレジストリから削除し、サービスを再インストールします。

RabbitMQブローカが起動していない

A)ErlangのCookieが同期していることを確認します(上記の「Erlang Cookieを確認する」の手順に従います)。

B)ERLANG_HOME変数が定義され、Erlangのフォルダを指していることを確認します。

失敗した直後にRabbitMQがクラッシュし、ログファイルに{error,{already_started,<...>}}というエラーがある

A)TLS以外のリスナーと同じポートを使用しているTLSリスナーがないことを確認します。リスナーは、%ALLUSERSPROFILE%\RabbitMQ\rabbitmq.confまたは%ALLUSERSPROFILE%\RabbitMQ\advanced.configで構成できます。

B)TLS以外のリスナーで使用されるデフォルトのポートを定義するRABBITMQ_NODE_PORT環境変数がTLSリスナーと同じポートに設定されていないことを確認します。

アプリケーションがRabbitMQサービスにアクセスできない。Configuration Tool([Cache]タブ)の「Test Connection」操作が失敗する

A)RabbitMQサービスが実行されていることを確認します。

B)ポート番号5672に対するファイアウォール例外があることを確認します。

C)以下の手順を実行し、RabbitMQノードが実行されていることを確認します。

  1. コマンドラインコンソールを開き(管理者として実行)、RabbitMQのバッチスクリプトフォルダに移動します。

  2. 以下のコマンドを実行します。
    rabbitmqctl.bat status

  3. rabbitmq@<マシン名>ノードが実行されていない場合は、以下のコマンドを実行して起動します。
    rabbitmqctl.bat start_app

D)以下の手順を実行し、RabbitMQユーザーが正常に作成されたことを確認します。

  1. コマンドラインコンソールを開き(管理者として実行)、RabbitMQのバッチスクリプトフォルダに移動します。

  2. 以下のコマンドを実行します。
    rabbitmqctl.bat list_users

  3. RabbitMQユーザーがコマンド出力のリストに表示されていない場合は、以下のコマンドを実行して作成します。
    rabbitmqctl.bat add_user <管理者のユーザー名> <管理者のパスワード>

E)以下の手順を実行し、インストールスクリプト(デフォルトでは/outsystems)で定義されている仮想ホスト(vhost)に対する権限がRabbitMQユーザーにあることを確認します。

  1. 以下のコマンドを実行します。
    rabbitmqctl.bat list_permissions -p /<仮想ホスト>

  2. RabbitMQユーザーに権限がない場合は、以下のコマンドを実行します。
    rabbitmqctl.bat set_permissions -p /<仮想ホスト> <管理者のユーザー名> ".*"".*"".*"

F)キャッシュ無効化サービスのユーザーのパスワードに特殊文字(たとえば、?&^"'*()など)が含まれていないことを確認します。

G)問題が解決しない場合は、サポートにお問い合わせください

イベントビューアに「Error executing PubSub jobs, X consecutive Jobs failed」のようなメッセージが含まれている

説明: 構成のミスまたは不整合な状態が原因で、ジョブの完了に失敗しました。該当するジョブは、キューの作成、交換の作成、交換へのキューの登録です。

A)これが常に発生し、連続して失敗したジョブの数が多い場合は、モジュールの再デプロイを試みます。

B)問題が解決しない場合は、サポートにお問い合わせください

イベントビューアに「Error executing PubSub jobs, X consecutive connections failed」のようなメッセージが含まれている

説明: モジュールがRabbitMQサービスにアクセスできません。

A)この問題をトラブルシューティングするには、「アプリケーションがRabbitMQサービスにアクセスできない」に示された手順を実行します。