Попытка выполнить asyn c для бота Telegram в Spring Boot - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь выполнить команду для бота Telegram, который расширяет TelegramWebhookBot асинхронно. Для этой цели я использую готовый метод:

try {
  bot.executeAsync(response, new Callback());
  logger.info("started");
  Thread.sleep(30000);
  logger.info("finished");
 } catch ...

Но он не работает. Мои команды выполняются одна за другой (через 0,5 минуты), а не одновременно .. Затем я принял жестокое решение, я реализовал создание потока вручную:

new Thread(() -> {
  try { 
  bot.execute(response);//sync method
  logger.info("started");
  Thread.sleep(30000);
  logger.info("finished");
                
} catch ...).start();

И это работает !!! Затем я вошел в реализацию Telegram API метода executeAsyn c и то, что я вижу ... то же самое, что и я. Они используют ExecutorService (exe) только для создания потоков вместо моего нового Tread:

 exe.submit(new Runnable() {
      @Override
      public void run() {
         try {
           String responseContent = sendMethodRequest(method);//the sync background method of bot. execute

Я все же предпочитаю использовать готовый метод executeAsyn c из Telegram .. Что я делаю не так? Почему он не выполняется одновременно. Спасибо

...