0

Wso2ESB 4.7.0 と ActiveMQ または WSo2message borker 2.1.0 を使用しています

<proxy xmlns="http://ws.apache.org/ns/synapse" name="Message" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <property name="faisal" value="faisal" scope="default" type="STRING"/>
         <property name="target.endpoint" value="JmsChecking" scope="default" type="STRING"/>
         <store messageStore="faisal5"/>
      </inSequence>
      <outSequence>
         <log level="full"/>
      </outSequence>
   </target>
   <description></description>
</proxy

メッセージをシステム ディスクに保存したい メッセージ ストアに手動ストアを提供する方法

e like active mq or mwso2 message broker
    <messageStore name="faisal5" class="org.wso2.carbon.message.store.persistence.jms.JMSMessageStore" xmlns="http://ws.apache.org/ns/synapse">
       <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
       <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
       <parameter name="store.jms.destination">faisal5_Queue</parameter>
       <parameter name="store.jms.JMSSpecVersion">1.1</parameter>
       <parameter name="store.jms.cache.connection">false</parameter>
    </messageStore>

メッセージ プロセスの構成は次のようになっています。障害メッセージをシステム ディスクに保存できます。サーバーがクラッシュした場合、データが失われます。どうすればそれを達成できますか。

4

4 に答える 4

1

まず、WSO2 esb のメッセージ ストアの制限を理解する必要があります。メッセージ ストア メッセージとその他の情報を Java シリアライズ オブジェクトにシリアライズし、JMS キューに保存します。したがって、wso2 esb の「メッセージ プロセッサ」と「メッセージ ストア」以外のアーティファクトで読み戻すことはできません。[1] を参照して、図を使用して説明した場所をさらに理解してください。

さらに、ACTIVEMQ には既知のバグがあります [2]、[3]。キューに 100 を超えるメッセージがあり、キューに手動でアクセスしようとした場合。ActiveMQ がクラッシュします。

[1] http://vanjikumaran.blogspot.com/2013/08/jms-messagen-store-and-jms-message.html

[2] https://issues.apache.org/jira/browse/AMQ-4372

[3] https://issues.apache.org/jira/browse/AMQ-4595

于 2013-08-14T18:52:41.760 に答える
1

ActiveMQ で永続化を有効にしてみましたか? どのバージョンの ActiveMQ を使用していますか? ActiveMQ 5.8 を調べたところ、ファイルベースの DB である KahaDB がデフォルトの永続化構成として使用されています。持続性アプローチは、要件に基づいて変更できます。

持続性を有効にするには;

1) ファイル [ActiveMQ_HOME] --> conf --> activemq.xml に移動します。

2) ブローカーに対して以下の構成が有効になっているかどうかを確認します。

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" persistent="true" dataDirectory="${activemq.data}">
    <persistenceAdapter>
        <kahaDB directory="${activemq.data}/kahadb"/>
    </persistenceAdapter>

  • ブローカータグ内で、属性をpersistent="true"に設定します。
  • 構成はKahaDBを指しています。

デフォルトの KahaDB ファイルは、以下の場所にあります。

[ActiveMQ_HOME]/data/kahadb/

これが要件を満たしているかどうかを確認してください。詳細については、ActiveMQ の永続性を参照してください。後半には、KahaDB 永続化構成が含まれています。

ところで、ActiveMQ コンソールで「メッセージ エンキュー」と呼ばれるものは、最後のリセット以降のカウントです。これは、サーバーを再起動するたびに 0 に設定されます。実際に使用可能なメッセージ数は、「Number Of Pending Messages」の下の数で示されます。

私は WSO2 MB でこれを試していません。いつか試してみて、あなたに投稿し続けます。

于 2013-08-01T10:06:56.693 に答える
0

ここで、データストアをキュー(つまり、faisal5_Queue)として言及しましたが、SOデータはそのキューに保存されます..JMSキューの場合、ファイルシステムではなく、キューにのみ保存できます..

于 2013-07-31T12:59:37.960 に答える
0

JMS メッセージ ストアを使用している場合、サーバーがクラッシュしても、以前にキューに入れられた (まだ処理が完了していない) メッセージは残ります。これは、メッセージが JMS キューに保持されるためです。In Memory Message Store を使用すると、サーバーがクラッシュすると、メッセージが失われます。

JMS の場合、各ストア/プロセッサ インスタンスの名前リンクをクリックして、メッセージ ストアまたはメッセージ プロセッサ内の保留中のメッセージを参照できます。プロセッサ内のメッセージを参照できるようにするには、プロセッサを非アクティブ状態にする必要があります。しかし、サーバーを再起動すると、メッセージは ESB 4.7.0 で消えたようです。これをさらに調べて、あなたに投稿し続けます。

ActiveMQ ケースを試してみたところ、失敗したメッセージのエラー メッセージの詳細を表示できることがわかりました。

1) ActiveMQ コンソールにログインします。

2) [キュー] をクリックします。

3) メッセージストアのキュー名をクリックします。保留中のメッセージのリストが表示されます。

4) メッセージ ID をクリックします。失敗メッセージを含むメッセージの詳細が表示されます。

これが役に立ったことを願っています。

于 2013-08-01T07:04:40.567 に答える