ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

消息中间件(1)JMS

2021-03-28 21:03:06  阅读:168  来源: 互联网

标签:queue JMS 确认 topic 会话 消息 消息中间件


 

前言

本文仅为记录,反思一下ActiveMQ的学习情况,用作查漏补缺


提示:以下是本篇文章正文内容,下面案例可供参考

一、ActiveMQ基于JMS 的

ActiveMQ 是 最早出现的基于 JAVA JMS 规范的消息中间件,用来多方传递不同的消息。虽然目前互联网公司大部分都换成了性能极强的KAFKA,但是 ActiveMQ是比较基础的消息中间件,仍然值得去学习和掌握

JMS

JMS 是JAVA 制定的一套 基于消息通讯的API.

JMS 给消息通信定义的三种角色

broker (消息中间服务)  provider(消息生产者) consumer(消息消费者) 

消息的消费方式

同步消费:需要consumer 去阻塞等待消息的到来;

异步消费:需要一个监听器去监听queue 或topic ,监听到消息则取来消费

消息模型

 p2p点对点消费 和 pub/sub订阅发布模式

P2P 模式是基于queue来进行的,消息生产者向queue追加 消息,消费者去queue中获取消息。queue中的消息只能被消费一次,而且如果消费者不在线 ,消息会存储起来,不会丢失,等消费者上线再到queue 中获取消息

pub/sub模式基于topic来进行,消息生产者将消息发布到 topic 上,消费者通过topic获取消息。topic 中的消息可以被多个不同消费者获取,但是需要消费者在生产者发布消息之前订阅这个消息主题topic,否则即使生产者发布消息到topic,消费者也无法获取消息

JMS 消息Message

message由三部分组成:消息头,消息体,消息属性

JMS定义了五种消息类型:TextMessage、MapMessage、BytesMessage、StreamMessage和ObjectMessage。

消息可靠性机制

消息只有在被消费者确认之后,才被认为是被成功的消费掉

消息的成功消费通常包括三个阶段: 客户接收消息,客户处理消息,消息被确认

在事务性会话中,当一个事务被提交的时候,确认自动发生;而在非事务性会话中,消息何时被确认取决于创建会话时的应答模式

    Session.AUTO_ACKNOWLEDGE 当客户成功的从receive 方法中返回,或者从 MessageListener的onMessage 方法中返回是,会话自动确认收到消息

    Session.CLIENT_ACKNOWLEDGE 客户通过消息的acknowledge方法确认消息。在这种模式中,确认是在会话层上进行的,确认一个被消费的消息将自动确认所有已被会话消费的         消 息,

    Session.DUPS_ACKNOWLEDGE 延迟发送消息的确认。如果JMS失败,则可能导致消息重复发送,因此只能在消息的消费者容忍消息时使用。它的好处在于通过最小化会话确认消息所作的工作来减少会话的负荷。如果是重复的消息,那么JMS provider必须把消息头的JMSRedelivered字段设置为true

消息确认机制会给性能造成一定的影响

持久化

JMS 支持两种方式消息提交  PERSISTENT 和 NON_PERSISTENT

优先级 

 消息的优先级分10 个级别, 0-9,默认的级别是4,生产者会首先提交优先级高的消息

消息过期

消息默认是永久有效,也可以给消息设定有效时间,来满足具有时效的数据处理

事务

JMS 提供的事务的API 是 session.commit 和Session.rollback

 


对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

标签:queue,JMS,确认,topic,会话,消息,消息中间件
来源: https://blog.csdn.net/iversonyi/article/details/115282393

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有