ActiveMQ,四:特性介绍

javase Java编程语言

javaEE
一套使用java进行企业级应用开发的,大家一致遵循的13个核心规范工业标准。
javaee平台提供了一个基于组件的方法来加快设计、开发、装配及部署企业应用程序。
1 JDBC 数据库连接
2 JNDI Java的命名和目录接口
3 EJB (基本淘汰)
4 RMI 远程方法调用 , Dubbox
5 Java IDL 接口定义语言/公用对象请求代理程序体系结构
6 JSP
7 Servlet
8 XML 可扩展标记语言
9 JMS Java消息服务 ,MQ
10 JTA Java事务API
11 JTS Java事务服务
12 JavaMail
13 JAF

JMS :javaEE技术体系里面一个子模块。
Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用
于支持JAVA应用程序开发。在JavaEE中,当两个应用程序使用JMS进行通信时,它们之间并不是直接相连的,而是通过一个共同的消息收发服务组件
关联起来以达到解耦/异步/削锋的效果。

JMS message组成:
消息头 :
JMSDestination 目的地
JMSDeliveryMode 消息是否可持久性
JMSExpiration 消息是否过期,默认永不过期
JMSPriority 消息优先级,ActiveMQ不保证消息顺序可靠性,但是加急消息(5-9)比普通消息先到达(0-4)
JMSMessageID 唯一识别每个消息的标识(默认由MQ生成不重复序列,可以根据此序列提取相应的消息)

消息体:
封装具体的消息数据
5种消息体格式:
TextMessage
MapMessage
BytesMessage
StreamMessage
ObjectMessage
发送和接受的消息体类型必须一致对应

消息属性
消息头的扩展属性

JMS的可靠性
1 消息持久化 ,默认持久化。
队列持久化: 保证消息,一定被消费一次
主题持久化:
1 一定要先运行一次消费者,等于向MQ注册,类似于我订阅了这个主题
2 然后再运行生成者发送消息,此时
3 无论消费者是否在线,都会接收到消息。不在线的话,下次连接的时候,会把没有收到的消息都接收下来。

2 事务(偏生产者)
事务作用:
try{
session.commit();
}catch(Exception e){
session.rollback();
}finally{
session.close();
}

3 签收(偏消费者)
自动签收(默认)
手动签收 ,使用较多。消费者调用 acknowledge()方法,否则,消息会被重复消费
允许重复签收

事务与签收关系:
1 在事务会话中,当一个事务被成功提交则消息被自动签收。
如果事务回滚,则消息会被再次传送。

2 非事务会话中,消息何时被确认取决于创建会话时的应答模式(acknowledgement mode)

4 多节点集群

非持久订阅: 不能恢复或重新派送一个未签收的消息。(消费者先订阅一个主题,当生成者发送消息时,订阅者(消费者)离线,订阅者再上线,是接收不到消息的)
持久订阅: 可以恢复或重新派送一个未签收的消息。(消费者先订阅一个主题,当生成者发送消息时,订阅者(消费者)离线,订阅者再上线,可以接收到消息)

ActiveMQ: Broker
1 相当于一个ActiveMQ服务器实例
2 Broker其实就是实现了用代码的形式启动ActiveMQ将MQ嵌入到Java代码中,以便随时用随时启动,在用的时候再去启动
这样能节省资源,也保证了可靠性。

类似于: redis集群,根据不同conf配置文件,启动多个redis服务器实例

ActiveMQ,根据不同配置文件,启动不同服务器实例。
./activemq start xbean:file: 路径/activemq02.xml

嵌入式Broker
Broker实现小型ActiveMQ服务器实例。提供简单ActiveMQ服务功能。

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页