5

次の例を見てください。

from("seda:data").log("data added to queue")
                  .setHeader("CamelHttpMethod", constant("POST"))
                  .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
                  .process(new Processor() {
                      public void process(Exchange exchange) throws Exception {
                              exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8");
                      }
                   })
                  .recipientList(header(RECIPIENT_LIST))
                  .ignoreInvalidEndpoints().parallelProcessing();

RECIPENT_LIST ヘッダーに http エンドポイントが 1 つだけ含まれているとします。特定の http エンドポイントの場合、メッセージは順番に処理する必要がありますが、異なるエンドポイントの 2 つのメッセージを並行して処理できます。

基本的に、パフォーマンスを向上させるために何かできることがあるかどうか知りたいです。たとえば、concurrentConsumers を使用すると役立つでしょうか?

4

1 に答える 1

6

parallelConsumers > 1 の SEDA は、複数のスレッドを並行して実行できるため、スループットに絶対に役立ちます...ただし、単一のスレッドのみが特定の http エンドポイントにヒットしていることを確認するには、独自のロックメカニズムを実装する必要があります。時間

それ以外の場合は、オプションの概要を以下に示します: http://camel.apache.org/parallel-processing-and-ordering.html

要するに、JMS を使用できる場合は、ActiveMQ メッセージ グループを簡単に使用できるものとして使用することを検討してください。これはまさにこのユース ケース (並列処理、メッセージ グループによるシングル スレッドなど) 向けに設計されています。

于 2013-09-06T03:44:47.940 に答える