簡體   English   中英

在 Spring 引導中處理 Datastax Java 驅動程序 CqlSession

[英]Handling Datastax Java driver CqlSession in Spring Boot

Datastax Java 驅動程序文檔說,為您的 Spring 引導應用程序創建一個 CqlSession 實例,因為構建 session 是一項昂貴的操作。

我想在 Spring Boot 中以有效的方式管理 CqlSession,以便 CqlSession 實例應該關閉而不是保持打開狀態,以釋放底層資源(TCP 連接、線程池......)。

驅動程序文檔 URL: https://docs.datastax.com/en/developer/java-driver/4.13/manual/core/

這是我的 CqlSession 實例 class。 我使用 Cqlsession 實例在我的 Spring 引導應用程序中運行 Cql 查詢,方法是將其作為依賴項注入到我的 @Service 和 @Repository 類中。

此外,我從不手動關閉我的 Cql session,而是讓 Spring 使用 @PreDestory 注釋處理它。 是否應該在執行 cql 查詢后立即關閉 session 還是應該允許 spring 如下代碼中所述處理它? 我已經意識到這樣做,再次構建 cqlsession 需要大約 1-1.5 秒的延遲,因此查詢運行速度非常慢。

@Configuration 
public class CqlSessionInstance {
    
        private CqlSession session;
    
        @PostConstruct
        private void initSession() {
            getSession();
        }
    
        public final CqlSession getSession() {
            if(session == null || session.isClosed()) {
                session = CqlSession.builder().build();
            }
            return session;
        }
    
        @PreDestroy
        public final void closeSession() {
            if (session != null && !session.isClosed()) session.close();
        }
    
    }

讓我知道是否有更好的方法來管理 Spring 引導中的 CqlSession

在我看來,我建議您自己關閉CqlSession ,因為您知道何時作為特定請求執行,並且知道何時關閉它。

如果您使用注釋@PreDestroy ,您將依賴於 Spring 生命周期管理,因此很難確定“何時”您的組件將被銷毀,因此您的 session 已關閉。

我陷入了同樣的困境,何時關閉 session? 在銷毀前還是在每個請求之后?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM