MessageConsumer的消息选择器

Producer:

 
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
 
import org.apache.activemq.ActiveMQConnectionFactory;
 
/**
 * @author jeffSheng
 * 2018年7月3日
 */
public class Producer {
	
	//1连接工厂
	private ConnectionFactory connectionFactory;
	//2连接对象
	private Connection connection;
	//3Session对象
	private Session session;
	//4生产者
	private MessageProducer messageProducer;
	
	public Producer(){
		try {
			this.connectionFactory = 
					new ActiveMQConnectionFactory(
							"admin", 
							"1234", 
							"tcp://localhost:61616");
			this.connection = connectionFactory.createConnection();
			this.connection.start();
			this.session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
			this.messageProducer = session.createProducer(null);
		} catch (JMSException e) {
			e.printStackTrace();
		}
	}
	
	
	public Session getSession(){
		return this.session;
	}
	
	public static void main(String[] args) throws Exception {
		Producer producer = new Producer();
		producer.sender1();
	}
	
	public void sender1() throws Exception{
		
		Destination destination = this.session.createQueue("first");
		
		MapMessage msg1 = this.session.createMapMessage();
		msg1.setString("name", "张三");
		msg1.setString("age", "23");
		msg1.setStringProperty("color", "blue");
		msg1.setIntProperty("sal", 2200);
		//int id = 1;
		//msg1.setInt("id", id);
		//String receiver = id % 2 == 0 ? "A" : "B";
		//msg1.setStringProperty("receiver", receiver);
		
		MapMessage msg2 = this.session.createMapMessage();
		msg2.setString("name", "李四");
		msg2.setString("age", "26");
		msg2.setStringProperty("color", "red");
		msg2.setIntProperty("sal", 1300);
		//id = 2;
		//msg1.setInt("id", id);
		//receiver = id % 2 == 0 ? "A" : "B";
		//msg2.setStringProperty("receiver", receiver);
		
		MapMessage msg3 = this.session.createMapMessage();
		msg3.setString("name", "王五");
		msg3.setString("age", "28");
		msg3.setStringProperty("color", "green");
		msg3.setIntProperty("sal", 1500);
		//id = 3;
		//msg3.setInt("id", id);
		//receiver = id % 2 == 0 ? "A" : "B";
		//msg3.setStringProperty("receiver", receiver);
		
		MapMessage msg4 = this.session.createMapMessage();
		msg4.setString("name", "赵六");
		msg4.setString("age", "30");
		msg4.setStringProperty("color", "blue");
		msg4.setIntProperty("sal", 1800);
		//id = 4;
		//msg4.setInt("id", id);
		//receiver = id % 2 == 0 ? "A" : "B";
		//msg4.setStringProperty("receiver", receiver);
		
		this.messageProducer.send(destination,msg1,DeliveryMode.NON_PERSISTENT,2,1000*60*10);
		this.messageProducer.send(destination,msg2,DeliveryMode.NON_PERSISTENT,3,1000*60*10);
		this.messageProducer.send(destination,msg3,DeliveryMode.NON_PERSISTENT,6,1000*60*10);
		this.messageProducer.send(destination,msg4,DeliveryMode.NON_PERSISTENT,9,1000*60*10);
		
		if(connection!=null){
			connection.close();
		}
	}
}

Consumer:


import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnectionFactory;

public class Consumer {

   public final String SELECTOR_0 = "age > 25";
	public final String SELECTOR_1 = "color = 'blue'";
	public final String SELECTOR_2 = "color = 'blue' and sal > 2000";
	public final String SELECTOR_3 = "receiver = 'A'";

	// 1.连接工厂
   private ConnectionFactory connectionFactory;
   // 2.连接对象
   private Connection connection;
   // Session对象
   private Session session;
   // 4.消费者
   private MessageConsumer messageConsumer;
   // 5.目标地址
   private Destination destination;
   //构造器中初始化四个对象
   public Consumer() {
       this.connectionFactory = new ActiveMQConnectionFactory(
               "admin",
               "1234",
               "tcp://localhost:61616"
       );
       try {
           this.connection = this.connectionFactory.createConnection();
           this.connection.start();
           this.session = this.connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
           this.destination = this.session.createQueue("first");
           //消费者
           this.messageConsumer = this.session.createConsumer(this.destination);

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

   public void receiver() {
       try {
           this.messageConsumer.setMessageListener(new MessageListener() {
               @Override
               public void onMessage(Message message) {
                   if(message instanceof  MapMessage){
                       MapMessage ret = (MapMessage) message;
                       try {
                    	   //System.out.println(ret);
                    	   //System.out.println(ret.toString());
                    	   System.out.println(ret.getString("name")+":"+ret.getString("age"));
                    	   //System.out.println(ret.getStringProperty("name") + ":" + ret.getStringProperty("age"));
                       } catch (Exception e) {
                           e.printStackTrace();
                       }
                   }
               }
           });
       } catch (JMSException e) {
           e.printStackTrace();
       }
   }

   public static void main(String[] args) {
       Consumer consumer = new Consumer();
       consumer.receiver();
   }
	
}

猜你喜欢

转载自blog.csdn.net/Leon_Jinhai_Sun/article/details/85209901