ActiveMQ学习三(高级特性1:消息组成[消息头、消息体、消息属性])

在这里插入图片描述

JMS(Java Message service)的消息组成详解

JMS消息组成格式

我们之前也了解到ActiveMQ是基于JMS标准的一个产品
JMS的消息到底是怎么组成的,他的格式是什么,我们很必要去指定

整个JMS协议组成结构如下:
在这里插入图片描述
JMS Message(消息)由三部分组成:

  1. 消息头 (Message Header)
  2. 消息体(Message Body)
  3. 消息属性(Message Properties)

JMS消息头

在这里插入图片描述
测试环境,目前用的是点对点模式

启动生产者模块
进入到activemq后台
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
讲解一下红色的

  1. JMS目的地:是讲发送的是队列(queue)还是主题(topic),由生产者设置
    在这里插入图片描述
  2. JMS消息id:每条消息的唯一标记,不能被我们开发篡改的,生产方每次发的时候去生成的唯一id,消费方只有在接受到消息id才指定id是什么
  3. JMSDeliveryMode(敌了喂润):消息持久化,设置是否持久化
  4. JMSExpiration(艾克斯布瑞瞬):失效时间,单位是毫秒,值0表示不会过期默认为0
  5. JMSPriority(派欧ruai踢)在这里插入图片描述
  6. JMSCorrelationID(关联消息id)(可likeA瞬):可以由我们程序篡改,通过这个id可以让生产者和消费者进行一些消息的联系,比如生产方发了个id存了个标记,然后消费者就可以拿出这个标记来判断是不是我生产方传的消息
    JMSReplyTo消息回复的地址
    在这里插入图片描述

那么接下来去程序里面更改一下这三个消息头

这个时候我们来到消息的生产方
如果要对JMS消息的消息头的更改,我们就不能用JmsMessagingTemplate,我们需要换一个API——>JmsTemplate

然后我们用JmsTemplate去发送消息
在这里插入图片描述
然后我们到这个消息里面看一下
在这里插入图片描述
只有这个给CorrelationID 关联id被修改成功。

然后这个时候我们去消费方,拿出这个关联id

这个id就可以做到消息的唯一标记,然后我们在项目中呢有很多需求,需要用到这个唯一标记,我们期望在消费方这边能够锁定住生产方的某一条消息,这个id就可以作位一个锁定的标记
在这里插入图片描述

JMS消息体

五种:
在这里插入图片描述

TextMessage:

生产方方法:
在这里插入图片描述
消费方方法:
在这里插入图片描述

MapMessage:

生产方:
在这里插入图片描述
消费方
在这里插入图片描述
输出:
在这里插入图片描述

ObjectMessage:

生产者:
实体类必须去序列化,否则无法发送
在这里插入图片描述
在这里插入图片描述

消费方:
1、创建实体类
生产方消费方的目录结构必须一致,然后把user拷贝过去
2、编写接受方法
在这里插入图片描述

在这里插入图片描述
这个是什么原因呢?

注意: activemq5.12后为了安全考虑,activemq默认不接受自定义对的序列化对象,需要自定义加到受信任的列表里

我们的版本是5.15.9
在这里插入图片描述
接下来我们要把这个对象加到我们信任列表,就是让activemq来接受自定义的对象进行序列化和反序列化

我们需要在生产方和消费方都做更改
在这里插入图片描述
在这里插入图片描述
那么就可以实现一个对象在生产方和消费方的传输
然后重启
在这里插入图片描述
这个时候我们就可以看到了

BytesMessage:

生产方:

  1. 读取文件
  2. 构建文件输入流
  3. 把文件写入到缓存数组
  4. 把缓存数组写入到bytesMessage中
    在这里插入图片描述

消费方:
反过来

  1. 设置缓存数组
  2. 把字节消息的内容写入到缓存数组
  3. 构建文件输出流
  4. 把数据写处到本地硬盘

在这里插入图片描述
输出:
在这里插入图片描述

StreamMessage

是一种很基本的消息类型,主要在一个消息里面传输不同的消息类型,可以同时传递一些整数、字符串等
他跟mapMessage的区别是mapMessage是有键和值的
StreamMessage是只有值没有设置键的能力

生产方:
在这里插入图片描述
消费方:
在这里插入图片描述
五种消息类型主要是需要传递不同格式的应用场景

JMS消息属性

消息属性是随着消息随带过去的属性值
作用给消息做一下标记、过滤等功能
在这里插入图片描述

拿上面讲到streamMessage来讲一下属性
生产方:
在这里插入图片描述

消费方:
接受消息属性
在这里插入图片描述
输出:
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无极的移动代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值