Вам необходимо использовать диспетчер транзакций, который поддерживает XA и, таким образом, может выполнять двухфазную фиксацию для базы данных и механизма JMS. Существует несколько таких менеджеров транзакций (Bitronix, Atomikos и т. Д.), Которые можно бесплатно получить.
Если вы уже используете такой менеджер транзакций (потому что ваше приложение работает на сервере приложений, который его предоставляет), но вы не хотите настраивать что-то более тяжелое только для модульных тестов, то реализуйте два модульных теста
- тот, где макет JMS-части (только для проверки создания элемента БД),
- и один, где проверяется только обработка сообщений JMS
Обратите внимание, что без XA вам, вероятно, придется обрабатывать странные ситуации, когда сообщение JMS обрабатывается, тогда как первая транзакция еще не зафиксирована, или когда транзакция базы данных завершена, но отправка сообщения не удалась.