

EC2가 CPU 사용률 때문에 뭐하면 죽고 하니깐 배치가 제대로 도는지 확인이 어려웠다.
그래서 텔레그램 봇을 활용해서 배치가 제대로 수행되면 나한테 메시지를 보내도록 했다.
메시지가 안오면 바로 ec2 재부팅 하러 갈 수 있게 ㅎㅎ;
텔레그램 봇 혼자 만드는 방법: Botfather 사용해서 채팅하기
텔레그램 봇을 간편하게 만들어서 채팅 봇을 사용해보세요. Botfather라는 텔래그램 공식 봇을 사용하면 API KEY를 받아서 간편하게 채팅 봇을 통해 텔레그램 채널을 운영할 수 있습니다. 글에서 설
www.keywordontop.com
해당 글을 참고했다.
FeignClient 사용하는 곳도 있었는데 HttpURLConnection 을 활용해서 그냥 GET 메서드로 나한테 메시지를 보내면 되니깐
위에 글이 가장 유익했다.
텔레그램에서 BotFather 를 검색하면 아래 이미지의 채널을 발견할 수 있다. 하늘색 체크표시된 게 공식인거 같아 그 채널로 들어갔다.
/start 를 입력하면 시작하고
/newbot을 입력하면 봇이 생성된다.
2가지를 입력받는데 먼저 봇의 이름, 봇이 채널에서 사용할 이름(항상 뒤에 bot 이 부텅야 한다.) 이렇게 두 가지다.
난 두 가지다 공통으로 사용했다.
ex) Sample_bot 이런식으로
생성되면 Http API 엑세스 토큰이 발급된다.
https://api.telegram.org/bot[토큰 넣을 부분]/getUpdates
토큰을 넣고 열어보자
그리고 텔레그램에서 내 봇 채널을 검색해보자 봇 이름을 입력하면 검색이 되고
메시지를 하나 전달하면 웹페이지에 내용이 추가된다.
{"ok":true,"result":[{"update_id":,
"message":{"message_id":1,"from":{"id":내 id,"is_bot":false,"first_name":"유저 이름","language_code":"ko"},"chat":{"id":내 아이디,"first_name":"내 이름","type":"private"},"date":1707031920,"text":"/start","entities":
해당 내용에서 내 id를 알 수 있다.
이제 프로젝트로 가서 클래스를 하나 만든다.
난 TelegramAPI 패키지 안에다가 Telegram.java 클래스를 하나 만들었다.
package com.trading.crawlingtradinginfo.batch.TelegramAPI;
import lombok.extern.slf4j.Slf4j;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
@Slf4j
public class Telegram {
public static void sendCrawllingSuccessMessage() {
String Token = "토큰 넣어주세요";
String chat_id = "아이디 넣어주세요";
String text = "전달할 메시지 넣어주세요";
BufferedReader br = null;
try {
URL url = new URL("https://api.telegram.org/bot" + Token + "/sendmessage?chat_id=" + chat_id + "&text=" + text);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
// response 출력용
br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
String line;
while( (line = br.readLine()) != null ) {
log.info(line);
}
} catch (Exception e) {
log.info("텔레그램 메시지 전송 중 에러발생 : " + e.getMessage() + "\n 원인 : " );
e.printStackTrace();
}
finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
이렇게 만들고 배치 서비스에서 배치가 끝나면 메시지를 전송하도록 했다.
성공했다. 텔레그램을 활용한 배치 스케쥴러 모니터링을 할 수 있게 되었다.

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!