2017-03-09 15 views
-1

私は私の生産者はすでに非常に高速であるとしてメッセージを消費/処理する必要はありませ ActiveMQ非永続配信モードの制限?

  • 毎秒
  • リースでの処理が必要2Kメッセージを非常に高速な消費者を持ってするには、次の要件

    • を必要な場所私はActiveMQのを使用していますサーバーのクラッシュやその他の障害が発生した場合に再度通知します。私はプロセス全体を再度トリガーすることができます。
    • 非常に通常のコンフィギュレーション・サーバを実行する必要がある - 4Gib RAM

    プット/フェッチのための春の統合を使用non-persistent delivery modevm://localhost)(http://activemq.apache.org/what-is-the-difference-between-persistent-and-non-persistent-delivery.html

  • を使用して

    • の下に与えられたとして、私はActiveMQのを設定していますキュー/チャネルからの/からのメッセージ。 10スレッド
    • max-concurrent-consumersを使用して
    • は、他のすべてのconfigsは、ActiveMQのでデフォルトと小枝統合によるものであると仮定します。

    問題/質問

    • 私はnon-persistent delivery modeの場合はどのようにActiveMQのにメッセージが保存されるかわからない、それは私のキューサイズは、いくつかの制限を超えたら、私のプロセスは、メモリエラーのうちで失敗する可能性があります?私はこのプロセスを全面的にテストすることは非常に難しいので、これを求めています。だから私はプロセスを引き起こす前に制限について知っておく必要があります。
    • 上記の条件でnon-persistent delivery modeで十分でない場合は、persistent delivery modetcp://)で要件を満たすことができるパフォーマンスチューニングのヒントがありますか?私はすでにこのモードでテストしましたが、ここでは消費者が非常に遅いと思われます。また、私はすでにpersistent delivery modeで消費者を早くするためにDUPS_OK_ACKNOWLEDGEを使用しようとしましたが、運はありません。

    注:私は、私は確認していない最新のActiveMQバージョン5.14

  • 答えて

    1

    を使用していますどのようにActiveMQの店舗メッセージ非永続配信モードの場合は、メモリ内の

    ActiveMQのストアメッセージでまず、それをディスクにスワップします(activemqのデータパスにtmp_storageフォルダがあります)。

    それは私のキューサイズは、いくつかの制限

    を超えたら、私のプロセスは、メモリエラーのうちで失敗する可能性があります私も約百万のメッセージで、ActiveMQの中にメモリ不足に会ったことがありません。

    プロデューサフローコントロール(http://activemq.apache.org/producer-flow-control.html)で確認することもできます。 消費されないメッセージが多すぎる場合、プロデューサがハングすることがあります。

    また、持続的な配信のパフォーマンスについては、私も良い方法がありません。

    +0

    あなたのお返事ありがとうございます@MallowFox ..あなたは 'producer-flow'について少し説明できますか?私の理解によると、それは自動的に設定されているのですか?重負荷の場合にプロデューサの処理を遅くするために何かを行う必要がありますか? –

    +0

    @Vishal Zanzrukia activemqのconfig xmlにmemoryUsage制限とtempUsage制限を設定するだけです。プロデューサーは重い負荷があると自動的に減速します。 – Solo

    関連する問題