今天上班一个下午就看了一个jms消息机制,没事总结一下今天看的东西吧 !!把我记得的或者自己感觉重要的东西记录一下把,如果有谁感觉有错了请给我提下哈!!大家一起学习哈哈!!!准备做一个消息的demo出来。。。
1:ptp(也就p2p呵呵让我想到了b2b)给我的感觉就是 一个生产消息发给另一个人消费,,也就是point to point ,一个生产者生成的消息先是放在queue中,让另一个消费者去拿,拿完以后queue消息队列里面就没有这个消息了。-------
一对一(基于队列)
2:pub/sub就是一个生产者生产出来信息后给多给消费者用,用书上的话就是把一个消息发给Topic,这个主题可以有多个接收者监听,当一个消息到达这个主题后所有接收者就可以拿到这个信息了。-------------------------------------------
一对多(基于主题)
感觉第二种方式就是那些网上的苹果订阅一样的呢,说不定他们两者还真有共同之处呢。一句废话
我从网上找了几张图片可以方便大家理解哈!!!
图一 消息传播模式
图二 jms中公用,点对点,pub/sub的接口对比
前面我们讲了消息传递的模式,后面我们再来看看到底什么是消息吧!
message:
TextMessage(普通文本)
、
MapMessage(map类型)
、
BytesMessage(二进制信息)
、
StreamMessage(数据流信息)
和
ObjectMessage(对象信息),XMLMessage(xml类型信息)
上面简单说明了信息,下面我将对信息的产生传递过程需要的组件进行说明,同时希望大家对着图看的话了解的更深入:
图三 jms整个过程的时序图
- connectionFactory 一个工厂 生成connection的工厂类,
- connection 创建一个连接生成Session,
- session 由connection创建一个session ,他又可以川籍消息生产者,消费者,消息
- 生产者:MessageProducer 由Session 对象创建的用来发送消息的对象
- Destination,消息的目的地
-
消息队列:Queue 点对点的消息队列消息主题:Tipic 发布订阅的消息队列
-
消费者 : MessageConsumer 由 Session 对象创建的用来发送消息的对象
用文字描述上幅图1、生产者(producer)开发流程(ProducerTool.java):1.1 创建 Connection :根据 url , user 和 password 创建一个 jms Connection 。1.2 创建 Session :在 connection 的基础上创建一个 session ,同时设置是否支持事务和 ACKNOWLEDGE 标识。1.3 创建 Destination 对象:需指定其对应的主题( subject )名称, producer 和 consumer 将根据 subject 来发送 / 接收对应的消息。1.4 创建 MessageProducer :根据 Destination 创建 MessageProducer 对象,同时设置其持久模式。1.5 发送消息到队列( Queue ):封装 TextMessage 消息,使用 MessageProducer 的 send 方法将消息发送出去。2、消费者(consumer)开发流程(ConsumerTool.java):2.1 实现 MessageListener 接口:消费者类必须实现 MessageListener 接口,然后在 onMessage() 方法中监听消息的到达并处理。2.2 创建 Connection :根据 url , user 和 password 创建一个 jms Connection ,如果是 durable 模式,还需要给 connection 设置一个 clientId 。2.3 创建 Session 和 Destination :2.4 创建 replyProducer 【可选】:可以用来将消息处理结果发送给 producer 。2.5 创建 MessageConsumer :根据 Destination 创建 MessageConsumer 对象。2.6 消费 message :在 onMessage() 方法中接收 producer 发送过来的消息进行处理,并可以通过 replyProducer 反馈信息给 producer
看了给我点反应哈!!!让我能有基情继续写哈!!!