簡體   English   中英

如何在啟動時初始化spring Integration:gateway?

[英]How do I init a spring integration:gateway at startup?

我正在使用Spring集成通過活動MQ進行通信。 我有以下配置。

<integration:channel id="riskApprovalRequestChannel"/>
    <integration:channel id="riskApprovalResponseChannel"/>

    <jms:outbound-gateway id="riskApprovalServiceGateway"
                          request-destination-name="${risk.approval.queue.request}"
                          reply-destination-name="${risk.approval.queue.response}"
                          request-channel="riskApprovalRequestChannel"
                          reply-channel="riskApprovalResponseChannel"
                          connection-factory="jmsConnectionFactory"
                          receive-timeout="1000"/>

    <integration:gateway id="riskApprovalService" service-interface="com.my.ServiceInterface"
                         default-request-channel="riskApprovalRequestChannel"
                         default-reply-channel="riskApprovalResponseChannel"/>

除了第一個請求很慢之外,此方法效果很好。 我總是在第一個請求上遇到1秒超時。 某處顯然有一些延遲加載。

我的問題是,如何在啟動時進行完全初始化以避免第一請求總是超時?

干杯,

彼得

問題可能在於連接建立。

您可以做的一件事是將供應商ConnectionFactory包裝在Spring CachingConnectionFactory中(出於性能考慮,還是建議這樣做),並在初始化期間調用createConnection()。

有很多方法可以做到這一點-包括使用init方法,@PostConstruct方法或帶有afterPropertiesSet()的InitializingBean將連接工廠注入到其他bean中。 在上下文初始化期間將調用它。

這將導致高速緩存的連接被急切地連接。

您可能希望在try塊中執行此操作,以避免由於JMS代理不可用而導致應用程序上下文無法初始化(當然,消息傳遞仍將失敗,但是當代理可用時,應用程序將啟動並准備連接) 。

暫無
暫無

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

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