0

高速なプロデューサーESB(CSVをXMLに変換)と低速なコンシューマーESB(XMLのzip / base64 / SOAPラッピングを実行)があります。ESBはJMSトピックを介して通信します。このデザインはレガシーであり、変更することはできません。大きなCSVファイルが処理されると、プロデューサーがコンシューマーをフラッディングしているため、JBoss AS(5.2)は停止します。これは、ヒープサイズが4096Mの場合でも同様です。私はJBoss/JMSに不慣れで、すべてが当惑していることに気づきました。

設定を送信するプロデューサー

<action class="com.example.FooAction" name="ProcessFoo">
    <property name="springJndiLocation" value="FooEsbSpring" />
    <property name="exceptionMethod" value="exceptionHandler" />
    <property name="okMethod" value="processSuccess" />
    <property name="jndiName" value="topic/FooTopic" />
    <property name="connection-factory" value="ConnectionFactory" />
    <property name="unwrap" value="true" />
    <property name="security-principal" value="guest" />
    <property name="security-credential" value="guest" />
</action>

プロデューサー送信コード:

Message msg = MessageFactory.getInstance().getMessage(MessageType.JAVA_SERIALIZED);
msg.getBody().add(foo); // foo is the business specific message
new JMSRouter(config).process(msg);

構成を受け取るコンシューマー:

<jms-jca-provider connection-factory="ConnectionFactory" name="FooMessaging">
    <jms-bus busid="fooChannel">
        <jms-message-filter dest-name="topic/FooTopic"
            dest-type="TOPIC" transacted="false" />
    </jms-bus>
    <activation-config>
        <property name="dLQMaxResent" value="1" />
    </activation-config>
</jms-jca-provider>

トピック構成

<server>
<mbean code="org.jboss.jms.server.destination.TopicService"
    name="jboss.esb.quickstart.destination:service=Topic,name=FooTopic"
    xmbean-dd="xmdesc/Queue-xmbean.xml">
    <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer
    </depends>
    <depends>jboss.messaging:service=PostOffice</depends>
</mbean>
</server>

私がこれまでに試したこと。

  • コンシューマーESBなしでパブリッシャーESBを実行します-予想どおり問題はありません。
  • たくさんのグーグル、stackoverflowに関する既存の質問を探しています
  • レート制限への参照がいくつか見つかりましたが、これらを構成に適合させる方法がわかりません。
  • 私はAPIを見つけて、未処理のトピックにすでに含まれているメッセージの数を見つけようとしました(独自のバックオフ戦略を実装できることを期待して)。
  • このドキュメントを見てください。
4

1 に答える 1

1

このセクション6.3.17.2を見てください。org.jboss.mq.server.jmx.Topicを選択し、JMXを使用して「Depth」関連の属性を使用します。

それはあなたが探しているバックオフ戦略を構築するのに役立つかもしれません

于 2012-08-22T09:08:46.883 に答える