Spring Boot 如何在收到 SIGTERM 信号时优雅地退出循环和停机?

我想在收到系统的 SIGTERM 信号时,退出循环,并且优雅地停机。如何实现?

伪代码如下:

@Service
@RequiredArgsConstructor
public class MessageAsyncService {
    
    @Async
    public void run(Client client) {
        while (no SIGTERM) {
            Message message = getNewMessage(client);
            if (message = null)
                break;
            sendMessage(client, message);
        }
        // 其他处理任务
    }
    
    public void sendMessage(Client client, Message message) {
         // 更新 DB
         // 发送消息给客户端
         // 通知其他服务
         // 。。。。
    }
}

软件版本: Java 17, Spring Boot v3.3.1, Spring v6.1.10