XA Transaction
The X/Open standard interface for two-phase commit across heterogeneous resource managers, still common in enterprise middleware and rarely the right choice for new services.
XA defines how a transaction manager coordinates several resource managers — databases, message brokers, legacy systems — through a two-phase commit, so a message send and a database write commit or roll back together.
Where it still appears legitimately: Java EE and Jakarta EE application servers, mainframe and enterprise integration middleware, and the specific case of a database and a broker on the same host with a well-tested implementation. In those settings it works and removes a genuine class of bug.
Why it is avoided in new distributed designs: the coordinator is a single point of failure whose outage leaves participants blocked holding locks; performance is poor because locks are held across the network for the whole protocol; support quality varies significantly between implementations; and most cloud-native data stores and brokers do not implement it at all.
The modern replacement for the common case — "write to my database and publish an event atomically" — is the transactional outbox, which achieves the same practical guarantee with one local transaction and at-least-once delivery. For business processes spanning services, the replacement is a saga.