消息中间件

消息中间件是指利用搞笑可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的继承。

通过提供消息传递和消息排列模型在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等功能。

大致过程如下:

发送者把消息发送给消息服务器,消息服务器将消息存放在若干队列/主题中,在合适的时候,消息服务器会将消息转发给接受者。在这个过程中,发送和接收是异步的,也就是发送无需等待,而且发送者和接收者的生命周期也没有必然关系;尤其是在发布pub/订阅sub模式下,也可以完成一对多的通信,即让一个消息有多个接收者。

ActiveMQ

是一种分布式消息中间件,APACHE出品,历史悠久,实现JMS规范。

什么是JMS

定义了两个应用程序或者分布式系统发送消息的API,与具体实现平台无关,即JAVA MESSAGE SERVICE。还定义一系列相关术语。

术语英文 术语中文
ConnectionFactory 连接工厂
Connection 连接
Session 会话
Destination 目的地
MessageProducer 消息生产者
MessageConsumer 消息消费者
Message 消息
Broker 消息中间件事例(例如ActiveMQ)

JMS定义了两种消息模型:

  • 点对点Point-to-point,即一条消息对应一个生产者和一个消费者。
  • 发布订阅Publish/Subscribe,生产者发布topic,多个订阅了该topic的消费者都可以获取该消息。

JMS定义了消息结构,包括消息头,消息属性和消息体。

  • 消息头定义了消息的识别和消息的路由。
  • 消息属性是除了1)之外开发者定义的业务属性。
  • 消息体是具体的消息内容。

为什么要使用ActiveMQ

主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。

RPC和消息中间件的不同很大程度上就是“依赖性”和“同步性”。RPC方式是典型的同步方式,让远程调用像本地调用。消息中间件方式属于异步方式。消息队列是系统级、模块级的通信。RPC是对象级、函数级通信。

消息中间件常常用于:

  • 异步处理
  • 应用解耦
  • 流量削峰
  • 日志处理
  • 消息通讯。

ActiveMQ--概述相关推荐

  1. Part 1 ——ActiveMQ 概述

    Apache ActiveMQ 是使用JMS(Java Message Service)规范的两个系统间远程通信的一个消息代理(消息中间件).尽管ActiveMQ是使用Java语言编写的,但它提供了多 ...

  2. MQ 系列之 ActiveMQ 介绍

    1.1 简介 1.1.1 ActiveMQ 概述   Apache ActiveMQ 是 Apache 软件基金会所研发的开放源代码消息中间件:由于 ActiveMQ 是一个纯 Java 程序,因此只 ...

  3. ActiveMQ底层原理及安装使用详解

    1.消息中间件和ActiveMQ概述 2.ActiveMQ安装运行 3.使用ActiveMQ基本操作 4.实现1-用户注册的异步处理 5-0.ActiveMQ高级特性和用法 5-1.嵌入式MQ 5-2 ...

  4. 第11章 异步消息与异步调用

    开心一笑 [老爸斗地主把豆豆输光了,叫我给他充值.我说他不要在游戏里花钱,打发时间玩玩得了.老爸一下火了:小时候你要哪个玩具老子不给你买了,现在让你给我买点豆豆你都不肯,看来老了是指望不上你了... ...

  5. php elasticsearch,PHP ElasticSearch的使用

    系统是Windows server 2003. ElasticSearch是一个基于Lucene的稳定的.分布式.RESTFul的搜索引擎.其实所谓的RestFul就是它提供URL供你调用(建立索引和 ...

  6. ActiveMQ消息存储持久化

    转https://www.cnblogs.com/xinhuaxuan/p/6128380.html https://blog.csdn.net/lr131425/article/details/68 ...

  7. ActiveMQ高级特性

    引入消息队列之后该如何保证其高可用性 采用ZooKeeper+Replicated LevelDB集群 异步投递Async Sends 背景 对于一个Slow Consumer,使用同步发送消息可能出 ...

  8. ActiveMQ的多节点集群

    概述 基于zookeeper和LevelDB搭建ActiveMQ集群. 集群仅提供主备方式的高可用集群功能,避免单点故障. 集群实现方案 基于shareFileSystem共享文件系统(KahaDB) ...

  9. ActiveMQ的消息存储和持久化

    概述 为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一半都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久 ...

  10. JMS规范、ActiveMQ Broker和ActiveMQ传输协议

    Java实现ActiveMQ通讯(构建过程) 编写pom.xml配置文件 <!-- https://mvnrepository.com/artifact/org.apache.activemq/ ...

最新文章

  1. java读取配置文件的几种方法
  2. select初始化默认选项
  3. asp.net core 系列 18 web服务器实现
  4. OSCache使用指南
  5. 云南大学计算机调剂哪个方向比较容易,选择考研调剂,看准这几大调剂方向!...
  6. ai人工智能最新相关消息_我如何了解最新的AI研究
  7. 人脸识别的代码及问题
  8. hashMap底层原理
  9. 计算机微信开发中期检查表,毕业论文(设计)-中期检查报告(范文)61页
  10. 中国普通魔方行业市场供需与战略研究报告
  11. 外贸Newer必备外贸流程
  12. 淘宝关键字搜索商品-v1
  13. 项目需求|眼镜试戴app(ios)
  14. 如何给字符串数组赋值
  15. html图片长高如何设置,快速长高的方法 教你一个动作暴长10cm
  16. 并发编程后记_什么是后记? 它与我的打印机有什么关系?
  17. php 图片生成封面,用ps简单制作一张漂亮的封面
  18. 机械臂六维力传感器重力补偿原理
  19. 思派健康再次冲刺港股:上半年亏损3.5亿 腾讯为大股东
  20. Facebook推出简体中文语言版本

热门文章

  1. 面向机密计算的Enclave容器技术栈
  2. TikTok与抖音有什么不同?为什么TikTok被称为“海外版抖音”?
  3. java中实现的十进制转换成二进制的简单代码
  4. 对话吴恩达:伟大的AI企业需要CEO的全力支持
  5. 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(MyEclipse + SVN)
  6. PHP抓取页面的几种方式
  7. Java中String字符串截取几种方法(substring,split)
  8. MySQL-基础练习题1
  9. (openCV 十)ML_SVM
  10. windows10桌面鼠标右键出现卡顿解决方法