2

メッセージを生成するサーバーとメッセージを受信する多くのクライアントとの間で、パブリッシャー/サブスクライバー ベースの通信プロトコルをセットアップしたいと考えています。少し調べた後、ActiveMQ を使用することにしました。いくつかのチュートリアルと ActiveMQ サイトを見て、次のようにブローカーをセットアップしました。

BrokerService broker = new BrokerService();
broker.setPersistent(false);
broker.addConnector("tcp://localhost:61616");
broker.start();

メッセージパッシング機能のみが必要で、データベースの永続性などは必要ありません。ただし、アプリケーションを起動すると、構成に関係なく、activemq-data フォルダーが作成されます。これにより、次にブローカーを起動したときに例外が発生します。

SEVERE: Failed to start ActiveMQ JMS Message Broker. Reason: java.io.EOFException: Chunk stream does not exist at page: 0

これはバグですか、それともブローカーを正しく設定していないのですか (ActiveMQ 5.4.1 を使用)? 追加のデータ ストレージが作成されないように、永続性を無効にするにはどうすればよいですか? また、xml ファイルではなく、Java アプリケーション内からブローカーを構成することを好みます。

乾杯、マックス

4

4 に答える 4

1

これは通常の動作ではなく、KahaDB (Activemq のデフォルトの永続ストア) のバグです。

ActiveMQ のバグ 2935に関する情報を確認できます。

別の永続化エンジンを選択することでこれを解決できますが、奇妙なことにこの問題が数回発生し、その後消えました

于 2010-10-25T15:10:13.543 に答える
1

In my case remove all of the kahadb data files from the following directory helps:

$ ls /var/lib/activemq/main/data$ cd kahadb
db-1.log  db.data  db.redo  lock

then:

sudo service activemq restart

and everything back to work

于 2015-02-10T02:08:02.577 に答える
0

Maven pom を使用している場合は、` に切り替えます

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.8.0</version>
</dependency>

` また、KahaDB と Scheduler の内容をクリアすることも忘れないでください。必要がない場合は、スケジューラをオフにすることも役立ちます。

于 2013-03-13T11:47:51.553 に答える