Как настроить источник данных в WSO2 Stream Integrator 7.1.0 для автоматического повторного подключения mysql

#wso2 #wso2ei #wso2si

#wso2 #wso2-enterprise-integrator #wso2-streaming-integrator

Вопрос:

Я попытался настроить подключение источника данных к MySQL при развертывании.yaml WSO2 SI, чтобы я мог использовать его в своих приложениях Siddhi. Он работал нормально, как обычно, но когда я перезапускаю MySQL, источник данных не может повторно подключиться к БД, поэтому мое приложение Siddhi выдает следующие ошибки.

Как я могу настроить источник данных, чтобы он мог автоматически повторно подключаться после перезапуска базы данных.

Спасибо, Луонг.

 [2020-11-12 19:32:43,627] ERROR {io.siddhi.extension.io.cdc.source.polling.strategies.DefaultPollingStrategy} - Error occurred while processing records in table SweetProductionTable. {mode=polling, app=CDCWithPollingMode, stream=insertSweetProductionStream} java.sql.SQLException: Connection is closed
    at com.zaxxer.hikari.pool.ProxyConnection$ClosedConnection.lambda$getClosedConnection$0(ProxyConnection.java:493)
    at com.sun.proxy.$Proxy73.prepareStatement(Unknown Source)
    at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:315)
    at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java)
    at io.siddhi.extension.io.cdc.source.polling.strategies.DefaultPollingStrategy.printEvent(DefaultPollingStrategy.java:142)
    at io.siddhi.extension.io.cdc.source.polling.strategies.DefaultPollingStrategy.poll(DefaultPollingStrategy.java:86)
    at io.siddhi.extension.io.cdc.source.polling.CDCPoller.run(CDCPoller.java:202)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
  

Ответ №1:

Это ошибка siddhi-io-cdc. Приложение Siddhi с режимом опроса CDC выдает ошибки при перезапуске исходной базы данных. Эти сбои, вызванные ошибкой в классе DefaultPollingStrategy, printEvent(connection) не проверяет соединение перед его использованием, сначала необходимо getConnection() .

Ответ №2:

В конце URL-адреса подключения к mysql вы можете добавить следующее

 amp;amp;autoReconnect=true
  

Например:

 jdbc:mysql://localhost:3306/wso2_api_stat_alt?useSSL=falseamp;ampautoReconnect=true
  

Комментарии:

1. Спасибо, Шанака, я пробовал, как вы предложили, но он не смог подключиться повторно.

2. Вы можете воспроизвести эти ошибки, выполнив следующие действия: 1. Настройте источник данных на MySQL 2. Используйте источник данных в CDC @ Souce в приложении Siddhi 3. Перезапустите MySQL -> Ошибки, вызванные закрытием соединения с БД. Я обнаружил, что WSO2SI использует пул соединений Hikari, но он не может повторно подключиться к БД после потери соединения. Знаете ли вы, как настроить Hiraki CP, чтобы он мог автоматически повторно подключать все потерянные соединения в пуле?