消息中间件

Spring Boot 整合消息中间件 RabbitMQ

二次信任 提交于 2019-11-30 21:21:18
RabbitMQ 是消息中间件的一种,实现了 AMQP 标准。消息中间件的工作过程可以用生产者-消费者模型来表示。生产者发消息到消息队列中去,消费者监听指定的消息队列,并且当消息队列收到消息之后,接收消息队列传来的消息,并且给予相应的处理。消息队列常用于分布式系统之间互相信息的传递。 对于 RabbitMQ 来说,除了生产者、消息队列、消费者这三个基本模块以外,还添加了 交换机 (Exchange) 模块。它使得生产者和消息队列之间产生了隔离,生产者将消息发送给交换机,而交换机则根据调度策略把相应的消息转发给对应的消息队列。 交换机的主要作用是接收相应的消息并且绑定到指定的队列,有三种类型的交换机: 交换机 说明 direct 默认的交换机 (一对一)。即创建消息队列的时候,指定一个BindingKey,当生产者发送消息的时候,指定对应的Key,当Key和消息队列的BindingKey一致的时候,消息将会被发送到该消息队列中。 fanout 路由广播的形式,将会把消息发给绑定它的全部队列,即便设置了key,也会被忽略。生产者其实仅关注Exchange与Route Key, 消费者仅关注Queue topic Topic转发信息主要是依据通配符,队列和交换机的绑定主要是依据一种模式(通配符+字符串),而当发送消息的时候,只有指定的Key和该模式相匹配的时候

RabbitMQ学习教程(一)

馋奶兔 提交于 2019-11-30 21:19:34
一:消息中间件的定义: 消息中间件是在消息的传输过程中保存消息的容器。消息中间件在将消息从它的源头中继到它的目标时充当中间人的作用。队列的主要目的是提供路由并且保证消息的传递;如果发送消息时接受者不可用,消息队列会保留有消息,直到可以成功的传递它为止,当然,消息队列保存消息也是有期限的。 二:消息中间件的作用: 1.采用异步处理模式 消息发送者可以发送一个消息而无需等待响应。消息发送者将消息发送到一条虚拟的通道(主题或者是队列)上,消息接受者则订阅或者监听该通道。一条消息可能最终转发给一个或者多个的消息接受者,这些接受者都无需对消息发送者作出回应,整个过程是异步的。 例如:用户信息注册,注册完毕之后过段时间发送邮件或者短信。(这样理解:注册和发送邮件是两个不同的事件,异步的,用户注册信息插入数据库的同时向消息中间件发送一条消息,减少用户等待的过程, 如果用户做一个注册要等很长的时间是很糟糕的事情 ) 2.应用程序和应用程序之间是松耦合关系(理解为A宕机了对B没有影响) 发送者和接受者不必了解对方,只需要确认消息 发送者和接受者不必同时在线 例如:在线交易系统为了保持数据的最终一致性,在支付系统处理完成后会把支付结果放到消息中间件里通知订单系统修改订单的支付状态,两个系统通过消息中间件进行解耦。 三:消息传递的服务模型: mom中间件就是消息中间件的一个简称 四:消息中间件的传递模型

rabbitmq消息中间件的案例

China☆狼群 提交于 2019-11-30 21:12:12
GitHub地址: https://github.com/hsowan/rabbitmq-demo This demo will involve RabbitMQ and SpringAMQP. Application SecKill simulation Reliable delivery SecKill Now, there is only one goods which is MacBook Pro and one hundred users want to get it, ok, the only one MacBook Pro will be free after n minutes and all users can SecKill it. Let`s realize it. Using ThreadPoolExecutor to fake 100 users /** * int corePoolSize, * int maximumPoolSize, * long keepAliveTime, * java.util.concurrent.TimeUnit unit, * java.util.concurrent.BlockingQueue<Runnable> workQueue */ private ThreadPoolExecutor

SpringBoot整合RabbitMQ消息中间件(菜鸟学习)

╄→гoц情女王★ 提交于 2019-11-30 21:08:16
前言 自学多时,写一个demo做个总结 从建项目开始,比较简单的实现springboot+rabbitMQ消息中间件,一对多发送消息,供初学者参考,更快的理解rabbitMQ消息中间件 环境 win10 Idea2018.1.2x64 jdk1.8.0_131 erlang 10.1 rabbitmq_server-3.7.9 配置环境 erlang 由于rabbitmq是用erlang语言开发,所以先配置erlang环境 http://www.erlang.org/downloads 下载安装并配置环境变量,cmd显示版本号,配置成功 rabbitMQ http://www.rabbitmq.com/download.html 需要下载安装,添加rabbitmq账号,设置账号远程访问权限,启动sbin/rabbitmq-plugins.bat http://localhost:15672/#/ rabbitmq安装成功 创建项目 新建项目引入web和RabbitMQ依赖 https://start.spring.io/ 导入idea 项目结构 RabbitConfig 创建"hello"队列(也可以创建交换机,用交换机关联队列,实现各种类型的广播) package com.sunc.springbootrabbitmq.config; import org

高性能RabbitMQ消息中间件-入门秘籍

感情迁移 提交于 2019-11-30 21:07:07
一、前言 刚开始接触RabbitMQ的时候,有些概念那理解起来简直是像风像雨又像雾,晦涩难懂。 这篇文章用尽可能浅显的语言来解释RabbitMQ的入门知识。毕竟是入门课程,并没有对很多概念进行深入说明,如果你想更深入的了解RabbitMQ,可以继续关注本号后续发布的文章或者自己从网上搜寻了资料,自己探索研究。 二、RabbitMQ是什么 官方定义:RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入到队列池中。接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓冲和持久化操作,主要用在多服务器间或单服务器的子系统间进行通信,是分布式系统标准的配置。 趣味定义:兔子行动非常迅速而且繁殖起来也非常疯狂,用Rabbit来命名这个分布式软件,呼应了RabbitMQ的主要任务是处理海量的信息 以下是RabbitMQ最简单的流程图,相信看到这里的你,对MQ的运作流程应该会有个基本的了解了: 第一章-RabbitMQ环境搭建  第一节-RabbitMQ课程内容概述  第二节-回顾消息中间件产生的背景  第三节-几种主流的MQ对比  第四节-RabbitMQ环境安装与VirtualHost  第五节-RabbitMQ简单队列概述  第六节-创建RabbitMQ连接  第七节

消息中间件之RabbitMQ

旧街凉风 提交于 2019-11-30 21:03:59
一、RabbitMQ简介 1、简介 RabbitMQ是一个遵循AMQP协议的消息中间件,它从生产者接收消息并递送给消费者,在这个过程中,根据规则进行路由,缓存与持久化。 基于erlang语言开发具有高可用高并发的优点,适合集群服务器 可靠性:包括消息持久化,消费者和生产者的消息确认 灵活路由:遵循AMQP协议,支持多种Exchange类型实现不同路由策略 分布式:集群的支持,包括本地网络与远程网络 高可用性:支持主从备份与镜像队列 多语言支持:支持多语言的客户端 WEB界面管理:可以管理用户权限,exhange,queue,binding,与实时监控 访问控制:基于vhosts实现访问控制 调试追踪:支持tracing,方便调试 开源免费 【较其他MQ】 - Apache ActiveMQ 比较出名,但是有丢失消息的风险。 - ZeroMQ延迟很低、支持灵活拓扑,但是不支持消息持久化和崩溃恢复 2、核心概念 producer:消息生产者,就是投递消息的程序 consumer:消息消费者,就是接受消息的程序 Message是RabbitMQ中的消息体 Broker:简单来说就是消息队列服务器实体 channel:消息通道,在客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务 Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列

消息中间件和RabbitMQ应用学习

倾然丶 夕夏残阳落幕 提交于 2019-11-30 21:03:34
一、什么是消息中间件 分布式系统服务之间(或RPC通信),进行远程异步消息传递用到的RabbitMQ或Kafka等软件统称为消息中间件,具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能。 二、消息中间件与分布式对象调用的比较 分布式对象调用: 提供了一种通讯机制,透明地在异构的分布式计算环境中传递对象请求,而这些对象可以位于本地或远程机器。它通过在对象与对象之间提供一种统一的接口,使对象之间的调用和数据共享不再关心对象的位置、实现语言及所驻留的操作系统。这个接口就是面向对象的中间件。 尽管面向对象的中间件是一种很强大的规范被广泛应用,但是面对大规模的复杂分布式系统,这些技术也显示出了局限性: 1.同步通信 :客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行。 2.客户和服务对象的生命周期紧密耦合 :客户进程和服务对象进程都必须正常运行,如果由于服务对象崩溃或网络故障导致客户的请求不可达,客户会接收到异常。 为了解决这些问题,出现了面向消息的中间件,它较好地解决了以上的问题。 消息中间件: 作为一个中间层软件,它为分布式系统中创建、发送、接收消息提供了一套可靠通用的方法,实现了分布式系统中可靠的、高效的、实时的跨平台数据传输。消息中间件减少了开发跨平台和网络协议软件的复杂性,它屏蔽了不同操作系统和网络协议的具体细节,面对规模和复杂度都越来越高的分布式系统

RabbitMQ消息中间件技术精讲 笔记

你说的曾经没有我的故事 提交于 2019-11-30 21:01:54
目录 1. 主流消息中间件 2. 衡量一个MQ指标 3. RabbitMQ介绍 4. RabbitMQ高性能的原因 5. 什么是AMQP 6. AMQP核心概念 7. RabbitMQ整体架构 1. 主流消息中间件 ActiveMQ 最流行,完全支持JMS规范,不适合在高并发下使用,API丰富 性能不好 Kafka 分布式发布-订阅消息系统,基于pull模式来处理消息,追求吞吐量,不支持十五,对消息的重复,丢失,错误没有严格要求 关注性能 RocketMQ 阿里开源 Java编写 高吞吐高性能 适合大规模分布式系统,思路起源于Kafka 保证消息顺序 支持分布式事务 上亿消息堆积 商业版收费 RabbitMQ Erlang开发 AMQP协议实现 一致性,稳定性,可靠性比较好。 对性能和吞吐量的要求还在其次 2. 衡量一个MQ指标 服务性能 数据存储 集群架构 3. RabbitMQ介绍 RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言开发,RabbitMQ基于AMQP协议 4. RabbitMQ高性能的原因 Erlang语言 在数据交换 数据同步方面非常优秀 Erlang有点 Erlang有和原生Scoket一样的延迟 5. 什么是AMQP 是具有现代特征的二进制协议

消息中间件Rabbitmq(二)-使用详解

痴心易碎 提交于 2019-11-30 20:57:33
Rabbitmq 是基于amqp(高级消息队列协议)实现的队列技术,在他之上可以完成多种类型的消息转发模型。 下面列举一些常用的消息转发场景,在rabbitmq中是怎样实现的。 1.原理 先来看一下rabbitmq消息转发的原理,便于理解消息转发以及怎样实现常见的消息转发模型。 1.1生产者 1.生产者创建连接,并创建通道连接rabbitmq 2.使用routing key绑定exchange和队列,可以绑定多个routing key到不同的队列。 3.生产者生产消息发送给exchange 4.exchange根据routing key匹配到对应队列名字,把消息转发到指定的queue上,消息会暂存在队列中,等待消费者来消费。 1.2消费者 1.消费者创建连接,并创建通道连接rabbitmq 2.消费者消费指定队列消息 注意:exchange、queue都必须要提前创建或者使用系统默认的也可以。 1.3exchange exchange分为4种,分别是 1.direct,直接转发。exchange通过精确匹配routing key发送消息给队列 2.fanout,广播。会将消息广播到所有绑定到这个exchange的队列,无视发送消息时指定的routingkey。 3.topic,发布、订阅。routing可以可以使用通配符(#、*)来根据主题发送消息到不同的队列。 4.Headers

RabbitMq消息中间件

家住魔仙堡 提交于 2019-11-30 20:49:16
分布式消息中间件:RabbitMq RabbitMq是最广泛被使用的消息代理,类似于ActiveMq,它是一个分布式的消息中间件。 上图来自于官网:是说RabbitMq迄今已经在全球小型企业和大型企业有超过35000个生产部署。也就是说有35000个产品使用了RabbitMq。它是当今最流行的开源消息代理。它也是一个轻量级的并且可以很容易的部署在本地和云环境。它支持多个消息协议。它也可以部署在分布式和联合配置中,以满足高规模,高可用的需要。它能在许多不同的操作系统和云环境中运行,并且为许多主流语言提供了广泛的开发者工具。 RabbitMq的安装和使用: 安装:在下载页面找到对应的操作系统进行安装,这里是Ubuntu 上图来自于官网:是说rabbitmq服务器包含在标准的Debian和Ubuntu仓库中,然而,包含的版本通常在RabbitMq发布几个月之后。 要安装RabbitMq的最近的版本有两种方式: 第一种方式:使用在bintray或者包云上的apt仓库安装,这种方式是高度推荐的。 bintray是什么?要说到bintray首先要说Jcenter,Jcenter是一个代码库,是一个公共的存储控件,而bintray是Jcenter的提供商。 第二种方式:下载这个包,使用dpkg -i安装,这种方式需要手动安装所有依赖项。 上图来自于官网:意思是说