Windows Server2008R2で実行されているApollo1.3に問題があります。Webアプリケーション(stomp-phpを使用するPHP)からSTOMPメッセージを送信しています。このメッセージは、Windowsサービスとして実行されているアプリケーションで処理されます。これはしばらくの間は正常に機能しますが、メッセージをApolloにプッシュすると、突然、「仮想ホストが停止しました」というエラーが発生します。
Apolloはまだ実行中であり、Webインターフェイスから仮想ホストにアクセスすることもできます。(これまでに見つけた)サービスを再度実行する唯一の方法は、サービスを停止して、ブローカーのデータフォルダー内のすべてを削除し、サービスを再開することです。サービスを再起動するだけでは機能しません。
apollo.logのスニペットは次のとおりです。
| WARN | DB operation failed. (entering recovery mode): java.io.FileNotFoundException: C:\apache-apollo-1.3\mybroker\data\dirty.index\MANIFEST-000004 (Das System kann die angegebene Datei nicht finden) | org.apache.activemq.apollo.broker.store.leveldb.LevelDBClient | leveldb store io write
...
| WARN | Could not recover snapshot of the index: java.io.IOException: Der Prozess kann nicht auf die Datei zugreifen, da ein anderer Prozess einen Teil der Datei gesperrt hat | org.apache.activemq.apollo.broker.store.leveldb.LevelDBClient | leveldb store io write
これらは私が見つけることができる唯一の例外です。
コードの問題というよりは構成エラーだと思いますが、関連するコードスニペットは次のとおりです。
$stomp = new \FuseSource\Stomp\Stomp('tcp://127.0.0.1:61613');
$stomp->connect('admin', 'password');
$message = array():
$stomp->send('/queue/messages', json_encode($message));
これは、仮想ホストが一定時間非アクティブ(つまり、メッセージや接続を受信しない)のときにトリガーされると思います。したがって、これがトリガーされないように、時々apollo-brokerを再起動することを考えていましたが、これが実際に仮想ホストを停止するトリガーになるかどうかはわかりません。
仮想ホストが突然停止する理由と、これを防ぐために必要な構成の変更を誰かに教えてもらえますか?ドキュメントを検索しましたが、仮想ホストの存続期間などについては何も見つかりませんでした。