[英]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.