Я использую интеграцию весны для связи через активный 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-го запроса, который работает медленно. Я всегда ударил 1-й тайм-аут по первому запросу. Там, очевидно, происходит какая-то ленивая загрузка.
Мой вопрос: как мне сделать полную инициализацию при запуске, чтобы избежать 1-го запроса, всегда сглаживания?
Приветствия,
Питер
Russel: Я уже использую Spring CachingConnectinoFactory. Добавление init-method = "createConnection" действительно исправить ситуацию, но я подозреваю, что он также покидает сиротское соединение, плавающее вокруг. Я закончил с использованием , который, похоже, выполняет эту работу. Принял ответ, как он указал мне в правильном направлении. –
Не должно быть никаких дополнительных подключений, поскольку CCF использует одно соединение (это подкласс SingleConnectionFactory, который добавляет кеширование сессий, расходников и производителей). –
Использование фабричного компонента для желаемого создания соединения - это аккуратный трюк. Но, как я заметил в другом потоке, вам не нужен init-метод - он ничего не делает, поскольку единственное соединение сохраняется для повторного использования. –