Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Rollback en JMS ?!?

1 réponse
Avatar
CaptnFree
Bonjour,

J'ai un petit doute a propos du fonctionnement des "rollback" en JMS a
partir d'une appli java. Imaginons qu'il y ait 3 messages dans ma queue.
m1.xml, m2.xml et m3.xml. Avec le code suivant je m'attendais a voire le
resultat :

m1.xml
m2.xml
rollback
m1.xml

et pourtant j'obtient

m1.xml
m2.xml
m3.xml

Ou est ce que je me suis trompe ?

Merci d'avance

PS : Voici le code :

-------------------------------------------------------------------

Properties info = new Properties();
QueueConnectionFactory queueConnectionFactory =
AQjmsFactory.getQueueConnectionFactory("jdbc:oracle:thin:@monserver.com:1234:MONSID",
info);
QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection("user", "password");
queueConnection.start();
QueueSession session = queueConnection.createQueueSession(true,
QueueSession.CLIENT_ACKNOWLEDGE);
Queue q = session.createQueue("MaQueue");
QueueReceiver jmsReceiver = session.createReceiver(q);

Message msg = jmsReceiver.receiveNoWait();
System.out.println(msg.getJMSCorrelationID());
msg = jmsReceiver.receiveNoWait();
System.out.println(msg.getJMSCorrelationID());
session.recover();
System.out.println("rollback");
msg = jmsReceiver.receiveNoWait();
System.out.println(msg.getJMSCorrelationID());

1 réponse

Avatar
danchy
Salut,

soit tu n'as pas fourni tout ton code ou alors tu n'as pas de
transactions. Pour pouvoir faire un rollback/commit tu dois d'abord
commencer une transaction qui peut etre local dans ton cas ou XA
(distribuee).

Daniel,

http://www.gradecak.com/

CaptnFree wrote:
Bonjour,

J'ai un petit doute a propos du fonctionnement des "rollback" en JMS a
partir d'une appli java. Imaginons qu'il y ait 3 messages dans ma queue.
m1.xml, m2.xml et m3.xml. Avec le code suivant je m'attendais a voire le
resultat :

m1.xml
m2.xml
rollback
m1.xml

et pourtant j'obtient

m1.xml
m2.xml
m3.xml

Ou est ce que je me suis trompe ?

Merci d'avance

PS : Voici le code :

-------------------------------------------------------------------

Properties info = new Properties();
QueueConnectionFactory queueConnectionFactory =
AQjmsFactory.getQueueConnectionFactory("jdbc:oracle:thin:@monserver.com:1234:MONSID",
info);
QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection("user", "password");
queueConnection.start();
QueueSession session = queueConnection.createQueueSession(true,
QueueSession.CLIENT_ACKNOWLEDGE);
Queue q = session.createQueue("MaQueue");
QueueReceiver jmsReceiver = session.createReceiver(q);

Message msg = jmsReceiver.receiveNoWait();
System.out.println(msg.getJMSCorrelationID());
msg = jmsReceiver.receiveNoWait();
System.out.println(msg.getJMSCorrelationID());
session.recover();
System.out.println("rollback");
msg = jmsReceiver.receiveNoWait();
System.out.println(msg.getJMSCorrelationID());