1

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を再起動することを考えていましたが、これが実際に仮想ホストを停止するトリガーになるかどうかはわかりません。

仮想ホストが突然停止する理由と、これを防ぐために必要な構成の変更を誰かに教えてもらえますか?ドキュメントを検索しましたが、仮想ホストの存続期間などについては何も見つかりませんでした。

4

1 に答える 1

2

Apollo 1.3のユーザーは、BDBを使用するようにサーバーを再構成することをお勧めします。これは、BDBの方が安定しているためです。Apolloは、起動時にメッセージをログに記録して、これについて通知します。

Using the pure java LevelDB implementation which is still experimental. If 
the JNI version is not available for your platform, please switch to the BDB 
store instead.

さて、つい最近、Windows上のleveldbのJNIバージョンをサポートするApollo1.5がリリースされました。したがって、1.5にアップグレードしたい場合は、それでも問題が解決するはずです。

于 2012-11-09T16:33:00.760 に答える