У меня есть бот, который сначала создает массив сообщений, а затем отправляет эти сообщения на канал. Программа использует ScheduledExecutorService
и существует два Runnable
s и два потока: первый поток заполняет массив, второй отправляет запросы, если массив не пустой. После запроса сообщение должно быть удалено из массива. Сообщение содержит текст и gif:
public class BotTest {
private static final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(2);
public static void main(String[] args) throws Exception {
final MyBot bot = new MyBot();
ArrayList<Message> messages = new ArrayList<>();
Runnable createMessages =
new Runnable(){
public void run(){
//...creating messages
}
};
scheduler.scheduleAtFixedRate(createMessages, 0, 1, TimeUnit.MINUTES);
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
//if (messages.size()<=0) {
while (messages.size()<=0) {
System.out.println("Array is empty");
}
//else {
try {
final Message message = messages.get(0);
messages.remove(0);
bot.sendMessage(message);
}
catch (Throwable e) {
e.printStackTrace();
}
//}
}
}, 0, 1, TimeUnit.SECONDS);
}
}
sendMessage
public int sendMessage(Message message) throws Exception {
boolean result = false;
String linkText = rootLink + token + "/sendMessage?chat_id=@MyChat&text=" + message.getText();
String linkGif = rootLink + token + "/sendAnimation?chat_id=@MyChat&animation=" + URLEncoder.encode(message.getUrl(), "UTF-8");
int responseCode1 = new TelegramRequest(linkText).send().getCode();
int responseCode2 = new TelegramRequest(linkGif).send().getCode();
//...logging in text file
return responseCode1 + responseCode2;
}
Мой компьютер (Windows 7, IDE Intellij) продолжает отправлять сообщения, хотя я уже давно (несколько часов назад) прекратил процесс. Если я отключу интернет-соединение на моем компьютере, сообщения перестанут отправляться - пока я не включу его снова. Что происходит и как мне это остановить?
У меня также ведется логирование: для каждого сообщения запись делается в текстовом файле. Тем не менее, никаких записей не делается для этих непрерывных запросов. Это заставляет меня думать, что происходит какое-то кэширование, и эти запросы каким-то образом помещаются в какую-то очередь и только сейчас отправляются ...