2012-02-24 4 views
0

Я пытаюсь разработать многопоточный потребитель activemq. Сообщения обрабатываются в нескольких потоках. Возможно ли откат для конкретного потока в случае какого-либо исключения или отказа? Я смотрю session.rollback() и session.commit(), но если я вызову эти методы, как я буду уверен, что какое-то конкретное сообщение будет откат?activemq транзакционная поддержка

Я также открыт, если я могу выборочно совершить некоторое сообщение.

Заранее спасибо.

С уважением, Aeijit

ответ

0

зависит от того, где установлены границы транзакции. как правило, каждый поток будет иметь свою собственную транзакцию и будет совершать/откатывать все сообщения в своей транзакции.

Другой вариант - просто использовать общие стратегии исключения/повтора/DLQ для обработки отдельных сбоев сообщений, это проще и отвечает большинству требований.

0

Вы можете управлять подтверждением сообщений самостоятельно с помощью Session.CLIENT_ACKNOWLEDGE и откатом и совершающее или предпочтительно make use of a transaction manager для обработки такого поведения для вас. Вы должны взглянуть на message redelivery and dead-letter queue handling, чтобы получить представление о доступных вам вариантах обработки обратных сообщений.

Смежные вопросы