package filtrage;

import implementation.ClientJMS;

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

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

/* Annick Fron
 *
 * 
 * La Queue va stocker le message entre le lancement
 * de l'emetteur et du recepteur
 */

public class Recepteur extends ClientJMS {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		new Recepteur().run();
	}

	public void run() {
		ConnectionFactory cf = getConnectionFactory();
		Connection connexion;
		try {
			connexion = cf.createConnection();
			Session session = connexion.createSession(false,
					Session.AUTO_ACKNOWLEDGE);
			// pour un Topic on aurait de meme createTopic...
			Destination queue = session.createQueue("SampleQ1");
			// un recepteur pour les messages rouges et un pour les bleus
			MessageConsumer receiverRouge = session.createConsumer(queue, "couleur='rouge'");
			MessageConsumer receiverBleu = session.createConsumer(queue, "couleur='bleu'");
			// ne pas oublier de demarrer la connexion
			connexion.start();
			// réception d’un message de type texte : inversion de l'ordre de reception bleu puis rouge
			// pour montrer le filtrage
			// sans filtrage l'ordre de reception serait l'ordre d'emission : rouge puis bleu

			TextMessage messBleu = (TextMessage) receiverBleu.receive();			
			System.out.println("Message du recepteur bleu : " + messBleu.getText());
			TextMessage messRouge = (TextMessage) receiverRouge.receive();			
			System.out.println("Message du recepteur rouge : " + messRouge.getText());
			// fermeture de la connexion et de la session
			connexion.close();

		} catch (JMSException e) {
			
			System.out.println(e.getMessage());
		}
		
	}
}
