<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Virtual-Thread on Gukin Han</title>
    <link>https://gukin.dev/tags/virtual-thread/</link>
    <description>Recent content in Virtual-Thread on Gukin Han</description>
    <generator>Hugo</generator>
    <language>ko-kr</language>
    <lastBuildDate>Thu, 19 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://gukin.dev/tags/virtual-thread/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Virtual Thread로 인한 HikariCP 커넥션 풀 고갈 해결 과정 - 트랜잭션 경계 분리로 타임아웃 제거</title>
      <link>https://gukin.dev/posts/virtual-thread-hikaricp-pool-exhaustion/</link>
      <pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://gukin.dev/posts/virtual-thread-hikaricp-pool-exhaustion/</guid>
      <description>&lt;h2 id=&#34;virtual-thread-적용-이후-대량-이벤트-발생시-db-저장-로직-실패&#34;&gt;Virtual Thread 적용 이후 대량 이벤트 발생시 DB 저장 로직 실패&lt;/h2&gt;
&lt;p&gt;진행중인 개인 프로젝트에서는 &lt;a href=&#34;https://dart.fss.or.kr/&#34;&gt;DART&lt;/a&gt; 전자공시를 이용한다. 매일 수백 개의 전자공시가 DART 전자공시를 통해 게시되며 이를 수집해서 필터링하고 &lt;strong&gt;시장의 반응과 LLM의 감성분석을 집계하는 목표&lt;/strong&gt;를 갖고 있다.&lt;/p&gt;
&lt;p&gt;공시 자료 폴링(Polling)이 중단되었다가 재시작 하는 경우 다량의 공시자료를 조회하고 이벤트를 발행하게 된다. 이때 &lt;strong&gt;분석된 결과를 DB에 저장하는 과정에서 이슈가 발생&lt;/strong&gt;했다. 이 과정의 비즈니스 로직은 아래와 같이 정리할 수 있다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Polling으로 새 공시를 수집한다.&lt;/li&gt;
&lt;li&gt;수집된 공시의 제목으로 후속 처리가 필요한지 필터링한다.&lt;/li&gt;
&lt;li&gt;후속 처리가 필요하면 NewDisclosureEvent를 발행한다.&lt;/li&gt;
&lt;li&gt;이벤트 메시지에 담긴 공시 번호로 공시 문서를 조회한다.&lt;/li&gt;
&lt;li&gt;조회된 공시 문서를 LLM에게 넘겨서 감성 분석(Sentiment Analysis)을 실시한다.&lt;/li&gt;
&lt;li&gt;분석 결과를 DB에 저장한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;문제가 발생한 코드는 다음과 같다.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
