package transaction.deuxqueues;

import implementation.ClientJMS;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;

import javax.jms.Session;
import javax.jms.TextMessage;


/* Annick Fron
 * On va envoyer un message a deux queues dans une session transactionnelle
 * et simuler une erreur apres l'envoi du deuxieme message
 * on peut alors verifier qu'aucun message n'est envoye
 * avec le navigateur
 */


public class Emetteur extends ClientJMS {


	public static void main(String[] args) {
	
		new Emetteur().run();
	}
	public void run() {

		try {
			ConnectionFactory cf=getConnectionFactory();
			Connection connexion= cf.createConnection();
			// session transactionnelle : true
			Session session = connexion.createSession(true, Session.AUTO_ACKNOWLEDGE);
			// envoi premier message
			Destination queue1 = session.createQueue("SampleQ1");
			MessageProducer sender1 = session.createProducer(queue1);
			TextMessage mess1= session.createTextMessage("Hello1");
			sender1.send( mess1);
			// envoi deuxieme message
			Destination queue2 = session.createQueue("SampleQ2");
			MessageProducer sender2 = session.createProducer(queue2);
			TextMessage mess2= session.createTextMessage("Hello2");
			sender2.send( mess2);
			// simulation d'erreur de session
			session.rollback();
			session.close();
			connexion.close();
			System.out.println("Message envoye");


		} catch (JMSException e) {
		
			e.printStackTrace();
		}
	}
}
