В нашем новом проекте мы хотели бы достичь сделок, которые связаны с JPA (MySQL) и шина сообщений (RabbitMQ)XA транзакция и шина сообщений
Мы начали строить инфраструктуру с весенними данными, используя MySQL и RabbitMQ (через пружину amqp). Поскольку rabbitMq не является XA-транзакцией, мы сконфигурировали neo4j chainedTransactionManager в качестве нашего основного оператора транзакций. Этот менеджер принимает в качестве аргумента jpa txManager и rabbitTransactionManager.
Теперь я получаю возможность аннотировать службу с помощью @Transacitonal и использовать внутри нее jpa и кролик. Если я выдаю исключение, то в действительности не происходит никаких действий.
Вот мои вопросы:
- Является ли эта конфигурация действительно дает мне атомную сделку?
- Я слышал, что управляемый tx-менеджер не использует 2-фазную фиксацию, а «лучшее усилие», это лучшее усилие менее надежное? если да, то как?
Можно ли достичь одной транзакции с обеими источниками данных отката на провал одного из них? – Urbanleg
Нет ... Конец постоянный. Единственный способ обойти это - сделать компенсационную транзакцию (т. Е. Отслеживать изменения самостоятельно и вручную откат). –
Что относительно jta? без прикованного менеджера и без кролика.? (т. е. с активным mq вместо?) – Urbanleg