读书人

JMS轨范介绍(1)JMS消息

发布时间: 2012-11-10 10:48:50 作者: rapoo

JMS规范介绍(1)JMS消息

1、 JMS Provider

2、 JMS Client

3、JMS Producer

4、JMS Consumer

5、JMS Message

6、JMS Queue

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 创建2个目的地Destination destination = session.createQueue("JMS.DEMO");Destination destination2 = session.createQueue("JMS.DEMO2");// 创建生产者MessageProducer publisher = session.createProducer(destination);// 设置传输模式publisher.setDeliveryMode(DeliveryMode.PERSISTENT);// 创建消息TextMessage message = session.createTextMessage("Test Message");// 设置消息的目的地为destination2message.setJMSDestination(destination2);// 发送消息publisher.send(message);System.out.println(message.getJMSDestination());?

queue://JMS.DEMO?

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 创建目的地Destination destination = session.createQueue("JMS.DEMO");// 创建生产者MessageProducer publisher = session.createProducer(destination);// 设置传输模式publisher.setDeliveryMode(DeliveryMode.PERSISTENT);// 发送PERSISTENT消息publisher.send(session.createTextMessage("PERSISTENT MESSAGE"));// 设置传输模式publisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT);// 发送PERSISTENT消息publisher.send(session.createTextMessage("NON_PERSISTENT MESSAGE"));

?

PERSISTENT MESSAGE?

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 创建目的地Destination destination = session.createQueue("JMS.DEMO");Destination destination2 = session.createQueue("JMS.DEMO3");// 创建生产者MessageProducer publisher = session.createProducer(destination);// 设置传输模式publisher.setDeliveryMode(DeliveryMode.PERSISTENT);// 创建消息TextMessage message = session.createTextMessage("Test Message");message.setJMSReplyTo(destination2);// 发送消息publisher.send(message);?

public void onMessage(Message message) { try { System.out.println("Receive message: " + message); if (message.getJMSReplyTo() != null) { session.createProducer(message.getJMSReplyTo()).send(session.createTextMessage("This is a reply to" + message.getJMSReplyTo())); } } catch (Exception e) { e.printStackTrace(); }}?

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 创建目的地Destination destination = session.createQueue("JMS.DEMO");// 创建生产者MessageProducer publisher = session.createProducer(destination);// 设置传输模式publisher.setDeliveryMode(DeliveryMode.PERSISTENT);// 创建消息TextMessage message = session.createTextMessage("Test Message");// 发送消息publisher.setTimeToLive(5000);publisher.send(message);?

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 创建目的地Destination destination = session.createQueue("JMS.DEMO");// 创建生产者MessageProducer publisher = session.createProducer(destination);// 设置传输模式publisher.setDeliveryMode(DeliveryMode.PERSISTENT);// 创建消息TextMessage message = session.createTextMessage("Test Message");// 发送消息message.setObjectProperty("myProp", new HashMap() { { this.put("key1", "value1"); this.put("key2", "value2"); }});publisher.send(message);?

3) 清除属性:

JMS不能清除单个属性,但可以通过Message.clearProperties()方法清除所有消息属性;

?

3、消息体 :JMS提供了5种类型的消息体:

1) StreamMessage:消息体是Java流,写入和读出都是顺序的;

2) MapMessage:消息体包含key-value对,key为String,value为基本类型,可以通过迭代器访问;

3) TextMessage:消息体是String;

4) ObjectMessage:消息体是可序列化的Java对象;

5) BytesMessage:消息体是字节数组;

?

可以通过message.clearBody()来清除消息体;但在消费端,消息体是只读的,针对消息的写操作都会抛出MessageNotWritableException异常;

读书人网 >编程

热点推荐