第九课时:Java编码MQ标准API讲解

1、新建Maven工程;

2、POM.xml中加入activeMQ相关依赖:

java中act是什么意思 active java_服务器

下面是junit/log4j等基础通用配置:

java中act是什么意思 active java_服务器_02

3、JMS编码总体架构(Java消息服务规范;j2ee技术体系中的一种)

java中act是什么意思 active java_java中act是什么意思_03

主要作用在于session,Destination(目的地)

大体看了JMS总体架构后,对比我们用过的Java连接JDBC:1、注册驱动;2、建立连接(Connection);3、创建运行SQL的语句(Statement)....是不是很类似;

如果说我们new一个对象它会到堆内存中的新生区中(物理上说),那么MQ中消息就会到Destination中(队列、主题)

java中act是什么意思 active java_服务器_04

Destination中的队列(在点对点的消息传递域中,目的地称为队列queue)

java中act是什么意思 active java_服务器_05

Destination中的主题(在发布订阅消息传递域中,目的地称为主题topic)

java中act是什么意思 active java_java中act是什么意思_06

第十课时:消息生产到消息队列、消费者消费消息队列中的消息及消费方式。(编码入门阶段)

1、项目源码详见同文件夹下 :第十课:消息生产到消息队列;到消费者消费的三种方式。

第十一课时:Java编码topic讲解

Topic特点

java中act是什么意思 active java_持久化_07

注意:先启动订阅(消费者),再启动生产,不然发送的消息就是废消息。

队列和主题的区别:

java中act是什么意思 active java_Java_08

第十二课时:JMS是什么?

1、在编码中我们都以Jms开头,那Jms是什么?

java中act是什么意思 active java_java中act是什么意思_09

Jms(Java Message Service:Java消息服务;它是JavaEE体系中的一个技术)

java中act是什么意思 active java_服务器_10

第十三课时:JMS组成的四大元素

1、JMS provider(实现JMS接口和规范的消息中间件,也就是我们的MQ服务器)

2、JMS producer(消息生产者,创建和发送JMS消息的客户端服务)

3、JMS consumer(消息消费者,接收和处理JMS消息的客户端应用)

4、JMS message:

java中act是什么意思 active java_服务器_11

像我们之前班长给约定的规范一样:但它里面有三个特点很重要:消息头、消息体、消息属性。

第十四课时:JMS message之消息头

java中act是什么意思 active java_持久化_12

1、JMSDestination:消息发送的目的地,主要是指Queue和Topic

2、JMSDeliveryMode(设置消息持久化):如何保证消息的可靠性?如何保证消息的持久化?

首先比较持久化和非持久化模式

一条持久化消息:应该被传送“一次仅仅一次”,这就意味着如果JMS提供者如果出现故障,该消息不会丢失,它会在服务器恢复之后再次传递。

一条非持久的消息:最多传送一次,这意味着服务器出现故障,该消息将永远丢失。

3、JMSExpiration(设置消息过期时间):

java中act是什么意思 active java_Java_13

4、JMSPriority(设置消息优先级;好比加急快递和普通快递):

java中act是什么意思 active java_Java_14

5、JMSMessageID(每个消息的唯一标识,由MQ产生)   这个很重要

第十五课时:JMS message之消息体

1、如果说JMS message就相当于我们发邮件;那么消息头就是我们的收件人、目的地、持久化、过期时间、优先级...等。消息体就是邮件内容,也就是封装具体的消息数据。

2、消息体中5种格式:

java中act是什么意思 active java_java中act是什么意思_15

一般常用的TextMessage和Mapmessage就能满足百分之90需求

3、最后强调:发送和接收的消息体类型必须一致对应

第十六课时:JMS message之消息属性

java中act是什么意思 active java_Java_16

设置在消息头发送之前:

生产者设置:

java中act是什么意思 active java_Java_17

消费者消费:

java中act是什么意思 active java_Java_18

第十六课时:Queue可靠性之持久非持久化

java中act是什么意思 active java_服务器_19

解决问题:设置队列持久化;主要解决activeMQ服务区宕机问题

1、如果不设置setDeliveryMode,默认持久化。

第十七课时:Topic可靠性之持久非持久化

在主题中,必须先启动消费者(订阅者再启动生产者),否则是费消息

1、设置topic持久化消费端代码改造

java中act是什么意思 active java_持久化_20

2、设置topi持久化生产端代码改造

解决问题:设置主题持久化,是让订阅该主题但不在线的人,在线后获取对应订阅主题消息