Получение данных из базы данных с использованием Spring JDBC без опроса - PullRequest
0 голосов
/ 21 января 2019

В настоящее время изучая интеграцию с Spring, я хочу получить информацию из базы данных MySQL для использования внутри int:service-activator или int:splitter.

К сожалению, может показаться, что большинство примеров и документации основано на идее использования int-jdbc:inbound-channel-adapter, что само по себе требует опроса. Я не хочу опрашивать базу данных, а получаю конкретные данные на основе полезной нагрузки существующего сообщения, полученного из int:gateway. Эти данные затем будут использоваться для дальнейшего изменения полезной нагрузки или для помощи в разделении сообщения.

Я попытался использовать int-jdbc:outbound-gateway, поскольку в описании указано:

... jdbc.JdbcOutboundGateway 'для обновления базы данных в ответ на сообщение в канале запроса и / или для извлечения данных из базы данных ...

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

Update required for outbound-gateway

И вот я сейчас сижу с неисправным прототипом, который изначально выглядит так:

Start of integration-context diagram

Обведенный кружком кусок не функционирует int-jdbc:outbound-gateway.

Моя конечная цель состоит в том, чтобы, основываясь на полезной нагрузке, поступающей из incomingGateway (на рисунке выше), извлечь некоторую информацию из базы данных MySQL и использовать эти данные для разделения сообщения в analyzerSplitter, или чтобы возможно, измените полезную нагрузку, используя int:service-activator. Затем все это должно быть связано с int-jdbc:message-store, который, я считаю, может помочь с производительностью. Я не хочу регулярно опрашивать базу данных и не хочу ничего обновлять в базе данных.

При тестировании с использованием опроса int-jdbc:inbound-channel-adapter я уверен, что мой компонент источника данных настроен правильно и запрос может быть выполнен.

Как мне правильно настроить такое поведение в весенней интеграции?

1 Ответ

0 голосов
/ 21 января 2019

Если вы хотите продолжить поток после обновления базы данных, вы можете просто использовать JdbcTemplate в методе, вызываемом активатором службы, или, если это конец потока, использовать исходящий каналадаптер .

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

...

...