JMS 简介及模版

一个JMS应用的发送端的标准流程是:创建连接工厂>创建连接>创建session>创建发送者>创建消息体>发送消息到Destination(queue或topic)。

接收端则为:创建连接工厂>创建连接>创建session>创建接收者>创建消息监听器监听某Destination的消息>获取消息并执行业务逻辑

下面展示了JMS的编码模板:

发送端:

 

  1. public class QueueSender {
  2.         public static void main(String[] args) throws JMSException{
  3.             ConnectionFactory factory=new ActiveMQConnectionFactory(“tcp://localhost:61616”);//这里为简便,依赖ActiveMQ的JMS实现。现实程序中可以通过jndi查找方式查找factory,这样彻底避免关联特定JMS实现者。并拥有最大的可移植性。
  4.             Connection connection=factory.createConnection();
  5.             Session session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
  6.             Message message=session.createTextMessage(“Hello World!”+new Date().getTime());
  7.             Queue queue=new ActiveMQQueue(“queue.somebody”);//同上,这里依赖了ActiveMQ的JMS实现,现实中可以采用jndi查找方式获得Queue。
  8.             MessageProducer producer=session.createProducer(queue);
  9.             producer.send(message);
  10.             session.close();
  11.             connection.close();
  12.         }
  13.     }

 

接收端:

  1. public class QueueReceiver {
  2.             public static void main(String[] args) throws JMSException{
  3.                 ConnectionFactory factory=new ActiveMQConnectionFactory(“tcp://localhost:61616”);
  4.                 Connection connection=factory.createConnection();
  5.                 Session session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
  6.                 Queue queue=new ActiveMQQueue(“queue.somebody”);
  7.                 MessageConsumer receiver=session.createConsumer(queue);//创建两个接收者,同时消费同一个queue的消息。queue里的消息派发且仅派发一次给唯一一个消费者。
  8.                 MessageConsumer receiver2=session.createConsumer(queue);
  9.                 receiver.setMessageListener(new QueueMessageListener(“1”));
  10.                 receiver2.setMessageListener(new QueueMessageListener(“2”));
  11.                 connection.start();
  12.             }
  13.         }

 

消息侦听者:

  1. public class QueueMessageListener implements MessageListener{
  2.     private String num;
  3.     public QueueMessageListener(String num){
  4.         super();
  5.         this.num=num;
  6.     }
  7.     public QueueMessageListener(){
  8.         super();
  9.     }
  10.     public void onMessage(Message message) {
  11.         System.out.println(message.toString()+num);
  12.     }


Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s