JMS

 

192.168.200.128:8161

 

什么是Jms
jms全称叫做java message service (java消息服务)是jdk底层定义的协议.各大厂商都有实现的产品.

JMS的作用:
jms的作用是在系统也系统间进行异步传递数据
同步:
a系统调用B系统中的方法, a发送请求调用让B系统执行, 之后后返回结果. a系统一直等待B处理完成后返回结果
再继续往下执行代码, 如果B没有返回结果之前, A系统一直处于等待状态.
例如: dubbo, springCloud, webService
异步:
A发送消息(一条数据)向消息服务器, 消息服务器再将消息(数据)发送给B系统.
A将消息发送给消息服务器后, 不会等待, 立即执行下面的代码或者是操作, 不会等待B系统的执行.
例如: JMS技术, activeMq, rabbitMq, roketMq, zeroMq, kafka

jms在企业中的作用一般适用于以下几种场景:
a. 系统和系统间解耦
b. 使用JMS技术可以抗住流量压力洪峰
c. 广播发送, 系统间可以解耦并且, 将串行执行改为并行执行, 加快执行效率, 合理分配硬件资源.

JMS的同类型产品(重点):
a. activeMq: 一个老牌的apache下的消息中间件产品, 特点就是均衡, 不是最安全的也不是最快的.
b. rabbitMq: 比较安全, 保证数据不发丢.
c. zeroMq: 史上最快的队列系统, 可以用它来抗住压力洪峰.
d. kafka 史上发送接收速度最快的消息中间件产品(一般大数据使用), 对于数据安全性完全不考虑
e. roketMq: 一般使用roketMq来实现分布式事务(数据最终一致性方案), roketMq中有分布式消息级别事务的支持.
roketMq是阿里巴巴公司研发, 现已经捐献给apache, 所以现在是apache的顶级项目.

JMS支持的发送和接收的数据类型(重点):
• TextMessage--一个字符串对象    (纯文本)
• MapMessage--一套名称-值对  (web类型消息)
• ObjectMessage--一个序列化的 Java 对象 (onject类型包含实体类---一定要实现序列化接口)
• BytesMessage--一个字节的数据流  (字节流)
• StreamMessage -- Java 原始值的数据流     (io流)


JMS的两种发布模式(重点):
queue发送模式(点对点模式):
一个消息发送方, 一个消息接收方. 也可以是多个消息发送方, 一个消息接收方. (一个接收方)
topic主题发送模式(发布订阅模式):
一个消息发送方, 多个消息接收方, 也可以是多个消息发送方, 多个消息接收方. (多个接收方)


activeMq中两种发送模式的特点:
点对点发送模式(Queue):
一个发送方, 一个接收方. 它绝对安全, 能够保证接收方一定会接收到数据.使用消息服务器内部机制实现.
不用认为去考虑数据安全性问题.
内部实现保证数据安全性的原理:
1. 发送方将数据发送给消息服务器
2. 消息服务器在队列中保存消息, 先进先出, 将数据发送给接收方
3. 如果接收方没有宕机成功接收了消息, 则返回响应给消息服务器, 消息服务器
接收到响应后会将发送成功的数据从队列中删除
4. 如果接收方宕机, 那么在一定的时间内没有返回响应给消息服务器, 消息服务器认为,
消息发丢了, 则将队列中没有发送成功的数据持久化到消息服务器的硬盘上.
5. 如果宕机的消息接收方重启后, 会连接消息服务器, 消息服务器会再次将持久化的数据发送给
消息接收方, 消息接收方接收到数据后会返回响应, 消息服务器接收到响应收将持久化的数据
删除.发送成功.
订阅发布模式(topic):
一个发送方, 多个接收方, 发送接收数据不安全, 一旦接收方宕机, 数据有可能接收不到, 丢失.无法找回.
如果想要数据安全, 换用其他消息中间件技术.

 

转载于:https://www.cnblogs.com/lei0913/p/10851337.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值