Apache Camel - хранимые процедуры JDBC и сомнения в обработке транзакций

Я пытаюсь создать небольшое, основанное на концепции, приложение на базе Camel (работающее на FuseESB), которое, возможно, заменит часть нашей существующей системы интеграции, основанной на EJB. Сейчас я пытаюсь найти лучший способ справиться со следующим сценарием с помощью Apache Camel:

  1. Текстовое сообщение JMS приходит
  2. Я должен выполнить ряд операций с базой данных на основе содержимого сообщения, вызывая в основном хранимые предустановки / функции
  3. из результатов, полученных при вызовах базы данных, я должен создать ответное сообщение и отправить его в определенную очередь jms.
  4. В случае ошибки / исключения я хотел бы использовать механизм обработки мертвых букв.

Я могу создавать простые верблюжьи маршруты, обработка ошибок и исключений в верблюде также выглядит легко, но я не понимаю, как использовать компонент Camel SQL (я понимаю, что компонент JDBC не может быть транзакционным клиентом), чтобы все мои вызовы БД выполнялись как часть одной транзакции. Из того, что я нашел в сети, компонент Camel SQL нельзя использовать для выполнения хранимых процедур - так ли это? Если да, должен ли я использовать процессоры или простые классы pojo для выполнения моих вызовов jdbc? Как насчет транзакций в случае использования pojo или типов процессоров? Я был бы очень признателен за любые ссылки на ресурсы, описывающие, как обрабатывать такие варианты использования.

1 ответ

Решение

Я бы предложил использовать Java Bean для взаимодействия с JDBC, так как вы хотите сделать несколько вызовов и использовать хранимые процедуры. Иногда Java-код проще.

Например, Spring JdbcTemplate имеет хорошую абстракцию по сравнению с JDK JDBC API и позволяет довольно легко вызывать хранимые процедуры.

В качестве альтернативы MyBatis также поддерживает вызов хранимых процедур. http://loianegroner.com/2011/03/ibatis-mybatis-working-with-stored-procedures/

И есть компонент верблюда-mybatis также.

Другие вопросы по тегам