activeMQ

1) 广义消息队列

a) 消息队列本质:一次rpc变三次;内容存储;合适的时间投递
b) 消息队列设计重点
rpc通信: 协议(http,tcp),序列化(二进制流)
存储: 文件/数据库/内存
消费关系处理: 消息生产者,消息消费者,订阅关系
事务/防丢防重/
批量处理/异步处理(多线程投递消息)
性能: 高效存储等
c) 不同消息队列的特性: 消息堆积能力/丢失概率/减少重复/顺序保证/错峰流控能力/最终一致性/慢消费处理等
d) 基本流程
producer发送消息broker
broker存储消息
broker根据订阅类型(topic/queue)发送给consumer
consumer回复消息确认(各种acknowledge机制)
broker删除消息/备份
a) 关注点
高性能rpc方案(开源rpc框架,netty/mina)
存储方案(文件系统/jdbc/redis)
投递方案(何时从队列中取得消息进行投递,多线程投递模型)
消费关系存储(订阅关系存到公共存储上,如zookeeper)
事务消息: 即二阶段提交的分布式事务;发生在producer和broker之间
i. 转账问题: A账号给B账号转账100元,A和B是不同银行的,采用消息的方式来保证最终一致性,A银行要扣钱更新DB,又要发送消息给broker,如何保证两个操作的原子性?
ii. A先发送一个消息给broker
iii. broker保存成功后返回
iv. A根据返回结果更新DB,如果成功发送confirm消息给broker;如果失败返回取消给broker
v. broker根据返回结果操作消息状态

2) jms

a)     java定义的消息中间件的api规范,类似于jdbc

b) 消息发送模型
p2p: 点对点基于queue的模式,一个消息只发送给一个消费者;有多个消费者,默认轮询发送消息,达到负载均衡
pub/sub: 基于topic的发布/订阅模式,一个消息发送给所有订阅者
i. 除非显式指定,否则 topic 不会为订阅者保留消息
ii. 可以通过持久化(Durable)订阅来实现消息的保存
iii. 当持久化订阅者重新连接时,将会受到所有的断连期间未消费的消息

3) activeMQ是基于jms模型的消息框架

a) 支持多种通讯协议,常用的是TCP
b) 核心通讯机制包含三部分消息中介(Message Broker)和客户(client: 生产者和消费者)建立连接,关闭连接,心跳
c) 集群: 基于zookeeper+level db的主从,基于文件系统和数据库的主从. 没有负载均衡功能
d) 负载均衡: Broker-Cluster部署方式
e) 自己实现负载均衡
搭建3个基于文件系统的主从
连接信息存到zookeeper的节点中
客户端监控zk节点
客户端启动时去zk中拿mq连接信息
mq集群发生变更后,zk通知客户端

消息队列原理及activeMQ基本知识点相关推荐

  1. 基于 Kafka 和 ZooKeeper 的分布式消息队列原理

    转载:https://gitbook.cn/books/5bc446269a9adf54c7ccb8bc/index.html 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量 ...

  2. 再谈基于 Kafka 和 ZooKeeper 的分布式消息队列原理

    关于分布式消息队列,我在几个月前写过一篇文章:<深入浅出理解基于 Kafka 和 ZooKeeper 的分布式消息队列 >.最近,由于写作课程<分布式中间件实践之路>的契机,我 ...

  3. Kafka(消息队列原理,kafka定义,Kafka架构原理,kafka架构的工作流程)秒懂的kafka

    目录 什么是Kafka? 消息队列原理: 为什么要用Kafka? kafka的架构 kafka工作流程详解: 什么是Kafka? kafka是一个分布式消息队列 这个定义意味深长,记住容易,理解不易. ...

  4. java 消息队列详解_Java消息队列-Spring整合ActiveMq的详解

    本篇文章主要介绍了详解Java消息队列-Spring整合ActiveMq ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 1.概述 首先和大家一起回顾一下Java 消息服 ...

  5. 详解SpringCloud中RabbitMQ消息队列原理及配置,一篇就够!

    作者:kosamino cnblogs.com/jing99/p/11679426.html 一.MQ用途 1.同步变异步消息 场景:用户下单完成后,发送邮件和短信通知. 运用消息队列之后,用户下单完 ...

  6. 常见消息队列对比(ActiveMQ、ZeroMQ、kafka、RabbitMQ)?

    常见消息队列对比? 消息队列是分布式应用间交换信息的重要组件,消息队列可驻留在内存或磁盘上, 队列可以存储消息直到它们被应用程序读走. 通过消息队列,应用程序可以在不知道彼此位置的情况下独立处理消息, ...

  7. Java常用消息队列原理介绍及性能对比

    消息队列使用场景 为什么会需要消息队列(MQ)? 解耦  在项目启动之初来预测将来项目会碰到什么需求,是极其困难的.消息系统在处理过程中间插入了一个隐含的.基于数据的接口层,两边的处理过程都要实现这一 ...

  8. 消息队列技术介绍 : ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ

    一. 消息队列概述 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合.异步消息.流量削锋等问 ...

  9. 关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ

    一.消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有ActiveMQ,Rabbit ...

  10. activimq java集成_Java消息队列-Spring整合ActiveMq

    1.概述 首先和大家一起回顾一下Java 消息服务,在我之前的博客<Java消息队列-JMS概述>中,我为大家分析了: 消息服务:一个中间件,用于解决两个活多个程序之间的耦合,底层由Jav ...

最新文章

  1. Redis史上最强【集群】入门实践教程
  2. Raspberry pi 蓝牙音响播放
  3. eplan和西门子plc的对接_玩转西门子全集成自动化之TIA Selection Tool
  4. ABAP销售合同冻结Bapi
  5. postgresql的系统列(system cloumns)
  6. VMware VI4的界面和操作介绍
  7. fastai学习:02_production Questionnaire
  8. 别再瞎搞了,处理Java异常的10个最佳实践
  9. python \__class__
  10. @ManyToOne和@OneToMany 注解
  11. 一年月份大小月口诀_家乡山溪长的菖蒲种植有讲究,记住“口诀”事半功倍
  12. python练习题及答案-听说你python基础入门了?100个经典练习题送给你(附完整答案)...
  13. IT自动化运维平台建设解决方案
  14. 汽车超人:从电商到汽后新零售的华丽转身
  15. 软件性能测试pdf,软件性能测试报告模板.pdf
  16. PS1应用之——修改linux终端命令行各字体颜色
  17. 华为手机传感器测试软件,华为P8拍摄能力测试 IMX278传感器到底魅力何在
  18. 教你做网线,呵呵。。
  19. 微信小程序实现商城案例(赋源码)
  20. 【C++】C++实战项目机房预约管理系统

热门文章

  1. [ERP/鼎捷E10][存货管理]存货周转率/库存周转率
  2. JS编写人物行走动画
  3. c语言答案计算鸡兔同笼,鸡兔同笼-题解(C语言代码,思路清晰,简单易懂)
  4. java连接mysql数据库实现图书馆管理系统
  5. 全国高级计算机职称考试试题及答案,全国职称计算机考试复习题「附答案」
  6. MySQL教程:MySQL数据库学习宝典(从入门到精通)
  7. Gson解析JSON数据的两种方法
  8. 51 TMOD、TCON设置定时
  9. 101页海康威视-可视化智慧城管系统建设方案(附下载)
  10. java单例模式实例_java 单例模式的实例详解