powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Транзакционность считывания из MQ и записи в БД
6 сообщений из 6, страница 1 из 1
Транзакционность считывания из MQ и записи в БД
    #38037544
Tyo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приложении на WAS7 читаю сообщения из MQ-очереди стандартным образом через MDB и Activation Spec. После чего MBD что-то там делает с сообщениями и что-то пишет в БД.

Подскажите плз, есть ли способ обеспечить транзакционность этих двух действий -- считывание из MQ и запись в БД?
То есть сделать так, чтобы сообщение выгребалось из очереди только в том случае, если запись в БД прошла успешно. А если нет -- чтобы сообщение оставалось в очереди.

Заранее спасибо
...
Рейтинг: 0 / 0
Транзакционность считывания из MQ и записи в БД
    #38037554
alienrom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет.
Где-то видел подобный вопрос...
...
Рейтинг: 0 / 0
Транзакционность считывания из MQ и записи в БД
    #38037619
Tyo,

Да, можно.
Это функционал любого сертифицированного J2EE-сервера.
В общем случае все участники транзакции должны поддерживать двухфазные транзакции.

Транзакцией может управлять контейнер (Container-Managed) или приложение (Bean-Managed для EJB/MDB).
Подробнее про это можно прочитать в The Java EE 5Tutorial раздел 33.Transactions .
Еще более подробно в официальной спецификации J2EE 5, раздел "Transaction Management".
SR-000244 Java Platform, Enterprise Edition 5 Specification (Final Release)

Касательно MDB/MQ/Activation Spec - нужно выполнить необходимые настройки в самом Activation Spec и в MQ чтобы решить что делать с сообщением если его не удалось обработать определенное количество раз. В качестве подсказки и варианта - Backout Queue.

Особенности настройки сервера приложений для двухфазных транзакций с конкретными СУБД нужно читать в руководстве на сервер приложений.
...
Рейтинг: 0 / 0
Транзакционность считывания из MQ и записи в БД
    #38037652
Tyo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Хабаров,
Глянул, спасибо, примерно понятно.
Фактически достаточно для CMP в нужном месте поставить setRollbackOnly и нормально настроить ActSpec, чтобы она не захлебнулась в отвергнутых сообщениях...
...
Рейтинг: 0 / 0
Транзакционность считывания из MQ и записи в БД
    #38037699
TyoЕвгений Хабаров,
Глянул, спасибо, примерно понятно.
Фактически достаточно для CMP в нужном месте поставить setRollbackOnly и нормально настроить ActSpec, чтобы она не захлебнулась в отвергнутых сообщениях...
Да, в общем именно так.
А в особо "фатальных" случаях можно из MDB выкинуть RuntimeException, что, при обычных настройках ActSpec, приведет к его останову. Например для случая, когда СУБД "упала", или пропали права/возможность записи.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Транзакционность считывания из MQ и записи в БД
    #39476454
talent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток! Есть SessionBean, в этом бине есть метод, что-то вроде
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public String insertIntoTable() {
   SessionContext sessionContext;
   try {
      ...
      ...
      //делаем инсерт
      String query = "SELECT id INTO var_id FROM NEW TABLE (INSERT INTO my_table.....";
      String res = executeQuery(query);
      //после делаем проверку нет ли аналогичной записи в таблице 
      boolean duplicate = checkDuplicate();
      if (duplicate) {
         sessionContext.setRollbackOnly();
      }
      ...
   } catch (Exception ex) {
      sessionContext.setRollbackOnly();
   }
}


Вопрос - будет ли rollback инсерта, так сказать откат JDBC-транзакции вместе с откатом управляемой контейнером транзакции? Предполагаю, что отката инсерта не будет, но хочется услышать подтверждение или опровержение. Нашел вот такое утверждение
Менеджер транзакций J2EE управляет всеми транзакциями корпоративного компонента за исключением управляемых компонентом JDBC-транзакций

Заранее спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Транзакционность считывания из MQ и записи в БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]