|
Транзакционность считывания из MQ и записи в БД
|
|||
---|---|---|---|
#18+
В приложении на WAS7 читаю сообщения из MQ-очереди стандартным образом через MDB и Activation Spec. После чего MBD что-то там делает с сообщениями и что-то пишет в БД. Подскажите плз, есть ли способ обеспечить транзакционность этих двух действий -- считывание из MQ и запись в БД? То есть сделать так, чтобы сообщение выгребалось из очереди только в том случае, если запись в БД прошла успешно. А если нет -- чтобы сообщение оставалось в очереди. Заранее спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 11:15 |
|
Транзакционность считывания из MQ и записи в БД
|
|||
---|---|---|---|
#18+
Нет. Где-то видел подобный вопрос... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 11:19 |
|
Транзакционность считывания из MQ и записи в БД
|
|||
---|---|---|---|
#18+
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. Особенности настройки сервера приложений для двухфазных транзакций с конкретными СУБД нужно читать в руководстве на сервер приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 11:54 |
|
Транзакционность считывания из MQ и записи в БД
|
|||
---|---|---|---|
#18+
Евгений Хабаров, Глянул, спасибо, примерно понятно. Фактически достаточно для CMP в нужном месте поставить setRollbackOnly и нормально настроить ActSpec, чтобы она не захлебнулась в отвергнутых сообщениях... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 12:10 |
|
Транзакционность считывания из MQ и записи в БД
|
|||
---|---|---|---|
#18+
TyoЕвгений Хабаров, Глянул, спасибо, примерно понятно. Фактически достаточно для CMP в нужном месте поставить setRollbackOnly и нормально настроить ActSpec, чтобы она не захлебнулась в отвергнутых сообщениях... Да, в общем именно так. А в особо "фатальных" случаях можно из MDB выкинуть RuntimeException, что, при обычных настройках ActSpec, приведет к его останову. Например для случая, когда СУБД "упала", или пропали права/возможность записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2012, 12:32 |
|
Транзакционность считывания из MQ и записи в БД
|
|||
---|---|---|---|
#18+
Доброго времени суток! Есть SessionBean, в этом бине есть метод, что-то вроде Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Вопрос - будет ли rollback инсерта, так сказать откат JDBC-транзакции вместе с откатом управляемой контейнером транзакции? Предполагаю, что отката инсерта не будет, но хочется услышать подтверждение или опровержение. Нашел вот такое утверждение Менеджер транзакций J2EE управляет всеми транзакциями корпоративного компонента за исключением управляемых компонентом JDBC-транзакций Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2017, 22:14 |
|
|
start [/forum/topic.php?fid=43&msg=38037544&tid=1600429]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 461ms |
0 / 0 |