I'm doing these steps:

    Xid xid1, xid2;
    XASession session = ...;
    MessageConsumer consumer = ...;
    XAResource xaRes = session.getXAResource();

    xaRes.start(xid1, TMNOFLAGS);
    consumer.receive();
    xaRes.end(xid1, TMSUCCESS);
    // prepare the xid1, continue with xid2
    xaRes.prepare(xid1);
    xaRes.start(xid2);
    // receive one more item
    consumer.receive();
    // commit the first transaction
    xaRes.commit(xid1, false);

The issue is that the last `commit` should commit only the first received
message. But it commits also the message received using the xid2
transaction.

As far as I can tell the above behavior is legal. That's why the `commit`
method has the `Xid` argument: to tell which transaction are we committing.
The `receive` method uses the transaction associated currently with the
session. It also works with ActiveMQ Artemis.

Viliam

Reply via email to