JMS

较全的资料:http://blog.csdn.net/zhangxs_3/article/category/625599

http://blog.csdn.net/zhangzikui/article/details/24837999

1,http://blog.csdn.net/wl_ldy/article/details/7884475

基本概念:Java Message Service,java消息服务

支持两种通信模式:

点对点(一对一)-----等到消息接收者(receiver)接收到它,才会从消息队列中删除,没有被接收的消息会一直存在JMS容器里

发布订阅(一对多)。----不是持久的。消息一经发出,不管有没有人接收,都不会保存下来

2,Queue的是点对点的。Topic实现的是发布/订阅模型

  ConnectionFactory---->Connection--->Session--->Message
  Destination + Session------------------------------------>Producer
  Destination + Session------------------------------------>MessageConsumer

ConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");

Connection connection = factory.createConnection();
connection.start();

 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 

Message message = session.createTextMessage("Hello JMS!");

// Queue
Queue queue = new ActiveMQQueue("testQueue");

MessageProducer producer = session.createProducer(queue);

producer.send(message);

MessageConsumer comsumer = session.createConsumer(queue);
Message recvMessage = comsumer.receive();

//Topic

 Topic topic= new ActiveMQTopic("testTopic"); 

 MessageProducer producer2 = session.createProducer(topic);

producer2.publish(message); 

 MessageConsumer comsumer2 = session.createConsumer(topic); 

Message recvMessage = comsumer2.receive();

注意:

(1)connection连接用完之后必须记得关闭,否则连接资源不会被释放掉。关闭连接的同时会自动把会话、产生者、消费者都关闭掉。

(2)异步的接收消息,这时我们得用消息临听器(Message Listener)。这样就不会造成消息的阻塞

3.消息:(StreamMessage,MapMessage--有结构),(TextMessage,ObjectMessage,BytesMessage--无结构)

一个消息对象分为三部分:消息头(Headers),属性(Properties)和消息体(Payload)

 

posted on 2017-11-24 09:38  活在当下L  阅读(131)  评论(0编辑  收藏  举报

导航