【发布时间】:2025-12-26 20:50:07
【问题描述】:
我写了一个 LongPolling 机器人,它一次可以使用一个更新。
我希望它通过多线程处理 2 个或更多更新。
这里的例子我的意思。我在 Performance Optimizations (Python Telegram Bot) 文章中找到了这个示例。
示例:您正在运行 Echobot 和两个用户(用户 A 和用户 B) 同时向机器人发送消息。也许用户 A 有点 更快,所以他的请求首先到达,以 Update 对象的形式 (更新 A)。调度程序检查更新并决定它应该是 由带有名为 echo 的回调函数的处理程序处理。在 同时,用户 B 的更新到达(更新 B)。但是调度员 没有用 Update A 完成。它用 Update 调用 echo 函数 A,它向用户 A 发送回复。发送回复需要一些时间(请参阅 服务器位置),并且更新 B 在此期间保持不变。 只有在更新 A 的 echo 函数完成后,Dispatcher 对更新 B 重复相同的过程。
在本文中说要解决此类问题,python 电报库提供了一种在单独的线程中显式运行回调函数(或任何其他函数)的方法。
有人能解释一下我如何用java来做吗???
这是我的部分代码:
机器人
@Component
public class SenderBot extends TelegramLongPollingBot {
private static final String BOT_TOKEN = "token";
private static final String BOT_NAME = "bot_name";
static {
ApiContextInitializer.init();
}
@Override
public void onUpdateReceived(Update update) {
if (update.hasMessage()) {
...
some code
...
}
}
}
SpringBootApp
@SpringBootApplication
public class SenderBotApplication {
public static void main(String[] args) {
SpringApplication.run(SenderBot.class, args);
}
}
如果有人知道没有多线程的另一种方法 - 告诉我怎么做。
我将非常感谢任何帮助和示例。
【问题讨论】:
标签: java concurrency telegram-bot