2016-12-24 3 views
0

私は春休み消費者に問題が発生しています。私は2人の消費者の仕事を比較しました。 まず消費者:spring-amqp comsumerのパフォーマンスが非常に遅い

import com.rabbitmq.client.*; 
import java.io.IOException; 

public class Recv { 
    private final static String QUEUE_NAME = "hello"; 

    public static void main(String[] argv) throws Exception { 
     ConnectionFactory factory = new ConnectionFactory(); 
     factory.setHost("localhost"); 
     Connection connection = factory.newConnection(); 
     Channel channel = connection.createChannel(); 

     System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); 

     Consumer consumer = new DefaultConsumer(channel) { 
      @Override 
      public void handleDelivery(String consumerTag, Envelope envelope, 
        AMQP.BasicProperties properties, byte[] body) throws IOException { 
      } 
     }; 

     channel.basicConsume(QUEUE_NAME, true, consumer); 
    } 
} 

第二に、消費者:

@Controller 
public class Consumer { 

    @RabbitListener(queues = "hello") 
    public void processMessage(Message message) { 
    } 
} 

インストール春ブートコンシューマ用の設定ファイルはありません、すべてがデフォルトで行きます。 私のコンピュータでは、最初に10倍速く動作します。何が問題なのでしょうか?

答えて

0

Spring AMQPコンシューマのデフォルトのプリフェッチ(basicQos)は1です。これは、コンシューマに一度に1つのメッセージしか未処理であることを意味します。 rabbitListenerContainerFactory @Beanを設定してprefetchCountをより大きな値に設定してください。

デフォルトのブート設定である@Beanを上書きする必要があります。

+0

ありがとうございました。それは問題を解決しました。 – GoodYar

+0

ありがとうございます。私はあなたがここに新しい人であることを知っています。答えを "受け入れる"と答えた人は、他の人が答えを探すのに役立ちます(投票ボタンの下の左のチェックマークをクリックしてください)。 –

関連する問題