第九课时:Java编码MQ标准API讲解
1、新建Maven工程;
2、POM.xml中加入activeMQ相关依赖:
下面是junit/log4j等基础通用配置:
3、JMS编码总体架构(Java消息服务规范;j2ee技术体系中的一种)
主要作用在于session,Destination(目的地)
大体看了JMS总体架构后,对比我们用过的Java连接JDBC:1、注册驱动;2、建立连接(Connection);3、创建运行SQL的语句(Statement)....是不是很类似;
如果说我们new一个对象它会到堆内存中的新生区中(物理上说),那么MQ中消息就会到Destination中(队列、主题)
Destination中的队列(在点对点的消息传递域中,目的地称为队列queue)
Destination中的主题(在发布订阅消息传递域中,目的地称为主题topic)
第十课时:消息生产到消息队列、消费者消费消息队列中的消息及消费方式。(编码入门阶段)
1、项目源码详见同文件夹下 :第十课:消息生产到消息队列;到消费者消费的三种方式。
第十一课时:Java编码topic讲解
Topic特点
注意:先启动订阅(消费者),再启动生产,不然发送的消息就是废消息。
队列和主题的区别:
第十二课时:JMS是什么?
1、在编码中我们都以Jms开头,那Jms是什么?
Jms(Java Message Service:Java消息服务;它是JavaEE体系中的一个技术)
第十三课时:JMS组成的四大元素
1、JMS provider(实现JMS接口和规范的消息中间件,也就是我们的MQ服务器)
2、JMS producer(消息生产者,创建和发送JMS消息的客户端服务)
3、JMS consumer(消息消费者,接收和处理JMS消息的客户端应用)
4、JMS message:
像我们之前班长给约定的规范一样:但它里面有三个特点很重要:消息头、消息体、消息属性。
第十四课时:JMS message之消息头
1、JMSDestination:消息发送的目的地,主要是指Queue和Topic
2、JMSDeliveryMode(设置消息持久化):如何保证消息的可靠性?如何保证消息的持久化?
首先比较持久化和非持久化模式
一条持久化消息:应该被传送“一次仅仅一次”,这就意味着如果JMS提供者如果出现故障,该消息不会丢失,它会在服务器恢复之后再次传递。
一条非持久的消息:最多传送一次,这意味着服务器出现故障,该消息将永远丢失。
3、JMSExpiration(设置消息过期时间):
4、JMSPriority(设置消息优先级;好比加急快递和普通快递):
5、JMSMessageID(每个消息的唯一标识,由MQ产生) 这个很重要
第十五课时:JMS message之消息体
1、如果说JMS message就相当于我们发邮件;那么消息头就是我们的收件人、目的地、持久化、过期时间、优先级...等。消息体就是邮件内容,也就是封装具体的消息数据。
2、消息体中5种格式:
一般常用的TextMessage和Mapmessage就能满足百分之90需求
3、最后强调:发送和接收的消息体类型必须一致对应
第十六课时:JMS message之消息属性
设置在消息头发送之前:
生产者设置:
消费者消费:
第十六课时:Queue可靠性之持久非持久化
解决问题:设置队列持久化;主要解决activeMQ服务区宕机问题
1、如果不设置setDeliveryMode,默认持久化。
第十七课时:Topic可靠性之持久非持久化
在主题中,必须先启动消费者(订阅者再启动生产者),否则是费消息
1、设置topic持久化消费端代码改造
2、设置topi持久化生产端代码改造
解决问题:设置主题持久化,是让订阅该主题但不在线的人,在线后获取对应订阅主题消息