Messaging1(二)|学习笔记

简介: 快速学习 Messaging1(二)

开发者学堂课程【高校精品课-上海交通大学-企业级应用体系架构:Messaging1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/75/detail/15828


Messaging1(一)

 

内容介绍:

一、回顾上节内容

二、参考文件

三、异步通信

四、JMS

五、编程类型

 

四、JMS

Java 中有一个 JMS,就是 java 消息服务的 API,专门做消息服务,先来讲解收发消息的一个机制。

The format of message is elastic, including three parts:

- A header   //消息头

- Properties (optional)  //消息属性

- A body (optional)  //消息值

在 JMS 中比之前多了一个属性。消息头是有关消息的一些属性,属性是除了消息头外的属性,都是属性,但有两个差异:header 是固定数量,定义好一定键值对可以写,其它不能写。Properties 可以进行扩充,即自定义的属性可以放入(可以认为一个是定长的,一个是变长的,可以放入用户自己的属性例如自定义一些属性未来做筛选的一些因素)。两个合并是在描述 body 特定的一些属性。

消息头中包含:

- JMSDestination (S)  //发送到哪里,谁收到

-JMSDeliveryMode (S)  //发送的模式,例如发一次失败了就不再发还是失败了不断尝试转发

- JMSMessageID (S)   //消息id

- JMSTimestamp (S)  //消息时间戳

-JMSCorrelationID (C)  //一个消息很大不能在一个消息中发送走,可能分成几个消息发送,希望这几个消息关联起来,例 如 A 关联着 B,B 关联 C,C 关联 D,但是四个消息合并起来会成为一个单一的消息。可以在 A 的 CorrelationID中写 B,B 中写 C

-JMSReplyTo (C)   //想让接收到消息的人回消息往何处回

- JMSRedelivered (P)   //标识当前消息是否被重发过,在上述模式中认为消息一定要发送到,那么第一次消息发送失败后第二次再发送再尝试

- JMSType (C)  //消息类型,在java中除字符串还有其它类型

-JMSExpiration (S)  //消息何时过期,规定时间内过期就进行删除

- JMSPriority (S)   //优先级,后来的在时间顺序上晚但是发送的优先级高,那么就会先进行发送,例如后买的快递是优先发货,那么就会被先送到。

Header 中有三种角色:S、C、P 。 S 是调用 send 方法时由 jms 的实现包填入,C 是 cloud,由自己填入,例如A与B关联或者往何处回消息或者类型都是允许自己设置的,P 是消息服务器例如接收到消息的邮局自己填入标记。

整个消息头不能够扩展。

消息属性中包含:

-JMSXUserID (S)   //谁

-JMSXAppID(S)  //哪个应用发的

-JMSXDeliveryCount (S)   //如果已经被触发,发送多少次

-JMSXGroupID (C)  //如果是一堆消息,在哪个组中

-JMSXGroupSeq (C)   //在组中的顺序

-JMSXProducerTXID (S)  //这组消息同时被接受或者同时被发送,要在一个事务中执行,该事务是什么

-JMSXConsumerTXID (S)   //同时被发送,该事务是什么

-JMSXRcvTimestamp (S)  //什么时候被接收

-JMSXState (P)  //状态,例如有效状态或过时状态

消息属性对header进行一些补充,可以进行扩展。

- Property name: follows the rule of naming selectors

- Property value: boolean, byte, short, int, long, float, double, String

扩展时提供一个属性名,一个属性值。属性名遵循一般 id 的标识的方式,类型为基本类型加 String。

可以看到无论是 header 还是 properties,具体都不太关心,因为大量由系统设置,只有 C 可以自己设置。C 中有很多不是显示设置,是由系统帮助进行设置,例如创建一个文本消息自动就会设置消息的 type。关键是可以扩展,需要使用。 

消息体:

一个消息的类型就由消息体的类型决定

Message Type                            

Body Contains 

TextMessage          

A java.lang.String object (for example, the contents of an XML

file).

//文本消息,消息体整个是一个字符串 

MapMessage    

A set of name-value pairs, with names as String objects and

values asprimitive types in the Java programming

language.The entries can be accessed sequentially by

enumerator or randomly by name. The order of the entries is

undefined

//消息体整个放入 map 键值对 

BytesMessage      

A stream of uninterpreted bytes.This message type is for

literally encoding a body to match an existing message

format.

//字节流,与其它一些消息现有的主流格式兼容 

StreamMessage      

A stream of primitive values in the Java programming

language, filled and read sequentially.

//流,java 编程中的流,可以是 URL 流,file 流,自定义流 

ObjectMessage      

A Serializable object in the Java programming language.

//可序列化 

Message          

Nothing.Composed of header fields and properties only.This

message type is useful when a message body is not required.

//以上五种消息都为 Message 的子类。Message 本身表示没有消息

块。例如 A 给 B 发消息,B 说收到,像这种应答消息就不需要消息体,

只需要在消息头和属性中写入相关内容即可。所以特殊情况下写入

nothing 空消息体。不同的消息指消息体类型不同

相关文章
|
消息中间件 Kafka 程序员
kafka的Docker镜像使用说明(wurstmeister/kafka)
wurstmeister/kafka是镜像市场上很受欢迎的一个kafka镜像,今天来聊聊它的多种用法
7303 0
kafka的Docker镜像使用说明(wurstmeister/kafka)
|
数据可视化 安全 网络安全
Window下安装并使用InfluxDB可视化工具 —— InfluxDBStudio
Window下安装并使用InfluxDB可视化工具 —— InfluxDBStudio
5160 0
Window下安装并使用InfluxDB可视化工具 —— InfluxDBStudio
|
7月前
|
弹性计算 应用服务中间件 数据库
2026年阿里云服务器部署WordPress指南:轻量应用与ECS云服务器手动部署方案
在云服务器上搭建WordPress网站是个人开发者、学生及小型团队实现项目上线的常用需求。2026年阿里云提供两种主流部署方式:轻量应用服务器“开箱即用”方案,适合追求高效、无需深入运维的用户;ECS手动部署LNMP环境方案,适合需要自主管理环境、灵活配置的场景。本文将详细拆解两种方案的完整流程,确保不改变原意且无营销表述,帮助用户根据自身需求选择合适的部署路径。
660 0
2026年阿里云服务器部署WordPress指南:轻量应用与ECS云服务器手动部署方案
|
7月前
|
数据采集 JSON Java
Java 异步爬虫高效获取小红书短视频内容
Java 异步爬虫高效获取小红书短视频内容
|
7月前
|
人工智能 自然语言处理 运维
阿里云万小智AI建站产品介绍:使用场景、产品优势、收费价格参考
万小智AI建站是阿里云近期推出的热门建站产品,它是一个零代码自助建站平台,可以帮助您轻松、高效地创建和发布响应式网站。本文为大家介绍万小智AI建站的使用场景、产品优势、收费价格情况,以供参考。
|
Linux Windows
ubuntu20.04离线安装rabbitvcs
ubuntu20.04离线安装rabbitvcs
883 0
|
11月前
|
SQL Cloud Native 关系型数据库
关于sql工具的小理解
SQL作为关系型数据库的核心语言,其衍生工具构建了完善的数据操作与分析生态。本文从功能定位、技术演进、应用场景三方面,探讨SQL工具的发展与实践价值。
531 0
|
机器学习/深度学习 编解码 监控
算法金 | 深度学习图像增强方法总结
**图像增强技术概括** 图像增强聚焦于提升视觉效果和细节,广泛应用于医学、遥感等领域。空间域增强包括直方图均衡化(增强对比度)、对比度拉伸、灰度变换、平滑滤波(均值、中值)和锐化滤波(拉普拉斯、高通)。频率域增强利用傅里叶变换、小波变换,通过高频和低频滤波增强图像特征。现代方法涉及超分辨率重建、深度学习去噪(如CNN、Autoencoder)、图像修复(如GAN)和GANs驱动的多种图像处理任务。
1272 14
算法金 | 深度学习图像增强方法总结
|
SQL XML 安全
OWASP-TOP10漏洞详解以及防护方案
OWASP-TOP10漏洞详解以及防护方案
3803 0
|
人工智能
2023年8款好用免费可商用字体|标小智龙珠体
为了庆祝新的一年的开始,我筛选整理了一份8款实用且免费商用的中文字体清单。这些字体不仅易于使用,而且风格多样,可以用于logo设计、平面设计、标题设计等等,希望能够帮助到你。
2023年8款好用免费可商用字体|标小智龙珠体