Witam,
mam oto taki serwis który powinien wysyłać komunikat do kolejki
@Stateless
public class PracownikServiceImpl implements PracownikService {
@Resource(mappedName = "queue/TotalOrderQueue")
private Queue queue;
@Resource(mappedName = "ConnectionFactory")
private ConnectionFactory jmsConnectionFactory;
@Override
public void akcja() {
Connection connection = null;
Destination dest = (Destination) queue;
Session session = null;
try {
connection = jmsConnectionFactory.createConnection();
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(dest);
TextMessage message = session.createTextMessage();
message.setText("Hello");
System.out.println("Sending message: " + message.getText());
producer.send(message);
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
Jednak komunikat nie trafia do kolejki.
Po zmianie
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
na
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
wszystko działa oki. Ale ja chce otrzymać efekt transakcyjny dlatego ustawiam flage na true
jednak wtedy komunikat nie trafia do kolejki tak jakby transakcja nie byla komitowana.??/
Macie może jakieś pomysły
Pozdrawiam