liangyepianzhou commented on PR #14868:
URL: https://github.com/apache/pulsar/pull/14868#issuecomment-1327966173

   @codelipenghui @congbobo184  Run a Pulsar standalone and use the below test 
to get the running time of the change thread or not.
   ```java
       public void testTheRateOfExternalEcutorService() throws Exception {
           String topic = "testTheRateOfExternalEcutorService";
           String subName = "subName";
           int message_total = 1000;
   
           ExecutorService executorService = Executors.newFixedThreadPool(10);
           pulsarClient = 
PulsarClient.builder().serviceUrl("pulsar://127.0.0.1:6650").enableTransaction(true).build();
           ((PulsarClientImpl) pulsarClient).testExecutorService = 
executorService;
   
           //Build producer and consumer
           @Cleanup
           Producer<String> producer = pulsarClient.newProducer(Schema.STRING)
                   .topic(topic)
                   .create();
           @Cleanup
           Consumer<String> consumer = pulsarClient.newConsumer(Schema.STRING)
                   .topic(topic)
                   .subscriptionName(subName)
                   .subscribe();
   
           CountDownLatch countDownLatch = new CountDownLatch(message_total);
   
           for (int i = 0; i < message_total; i++) {
               producer.newMessage().send();
           }
           long start_time = System.currentTimeMillis();
           for (int i = 0; i < message_total; i++) {
               pulsarClient.newTransaction().build().thenAcceptAsync(txn -> {
                   try {
                       producer.newMessage(txn).sendAsync();
                       Message<String> message = consumer.receive(3, 
TimeUnit.SECONDS);
                       consumer.acknowledgeAsync(message.getMessageId(), txn);
                       txn.commit().thenRun(countDownLatch::countDown);
                   } catch (Exception e) {
                       throw new RuntimeException(e);
                   }
               });
           }
   
           countDownLatch.await();
           long end_time = System.currentTimeMillis();
           log.info("The message process by external executor test spend {} 
millis",
                   TimeUnit.MILLISECONDS.toMillis(end_time - start_time));
       }
   
   ```
   * The original process rate 
              - The message process test spends 708 millis thread 
   * The process rate of change thread, there. is not needed to use a single 
thread, so the rate changes by the thread size
             - The message process by external executor test spends 782 millis 
(thread size = 1)
             - The message process by external executor test spends 727 millis 
(thread size = 5)
            - The message process by external executor test spends 344 millis 
(thread size = 10)
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to