
消息中间件专题
文章平均质量分 93
源码小哥
这个作者很懒,什么都没留下…
展开
-
消息中间件专题(一)-消息中间件引言
消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ原创 2021-12-08 14:45:46 · 196 阅读 · 0 评论 -
RabbitMQ的六种工作模式
1.Simple简单模式消息产生消息放入队列消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器;p端,c端)2.work工作模式(资源的竞争)消息产生者将消息放入队列消费者可以有多个,消费者1,消费者2,同时监听同一个队列,消息被消费?C1 C2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息(隐患,高并原创 2020-12-15 11:42:25 · 1131 阅读 · 0 评论 -
Docker部署RabbitMQ
1、查询rabbitmq镜像docker search rabbitmq:management2、拉取rabbitmq镜像docker pull rabbitmq:management3、创建并启动容器(1)创建和启动docker run -d --hostname my-rabbit --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management(2)创建和启动(同时设置用户和密码)docker run -d --hos原创 2020-12-11 13:05:11 · 278 阅读 · 0 评论 -
RabbitMQ场景应用-死信队列模拟未支付订单自动取消
1.简介场景介绍:我们都经常在淘宝上买东西,当我们提交订单后,如果某个时间段之内我们没有支付,淘宝肯定不会帮我们一直保留那个订单,如果超过半个小时我们未支付的话,淘宝会自动帮我们取消订单。在没有用RabbitMQ消息队列之前,我们可以通过设置一个定时任务,设定一个定时规则去轮询数据库查询超过半个小时而且未支付的订单,然后修改订单状态为已取消,这也是一个解决方案,但是需要轮询数据库,增加了对数据...原创 2019-11-03 23:02:43 · 1150 阅读 · 2 评论 -
RabbitMQ死信队列和备份交换器
1.引言死信交换机(Dead-Letter-Exchange):当消息在一个队列中由于过期、被拒绝等原因变成死信 (dead message) 之后,它能被重新被发送到另一个交换器中,这个交换器就是死信交换机,绑定死信交换机的队列就称之为死信队列。判断一个消息是否是死信消息(Dead Message)的依据:a. 消息被拒绝(Basic.Reject或Basic.Nack)并且设置 requ...原创 2019-11-03 18:22:06 · 625 阅读 · 0 评论 -
RabbitMQ消息幂等性
1.简介消息幂等性,其实就是保证同一个消息不被消费者重复消费两次。当消费者消费完消息之后,通常会发送一个ack应答确认信息给生产者,但是这中间有可能因为网络中断等原因,导致生产者未能收到确认消息,由此这条消息将会被 重复发送给其他消费者进行消费,实际上这条消息已经被消费过了,这就是重复消费的问题。如何避免重复消费的问题?消费者端实现幂等性,意味着我们的消息永远不会消费多次,即使我们收到了多条...原创 2019-10-29 17:44:33 · 1446 阅读 · 0 评论 -
RabbitMQ消息持久化
1.简介在RabbitMQ中,如果遇到RabbitMQ服务停止或者挂掉,那么我们的消息将会出现丢失的情况,为了在RabbitMQ服务重启的情况下,不丢失消息,我们可以将Exchange(交换机)、Queue(队列)与Message(消息)都设置为可持久化的(durable)。这样的话,能够保证绝大部分的消息不会被丢失,但是还有有一些小概率会发生消息丢失的情况。下面通过一个简单的示例总结在Rabb...原创 2019-10-28 23:43:21 · 440 阅读 · 0 评论 -
RabbitMQ消息确认机制之Confirm模式
1.简介在RabbitMQ中,消息确认主要有生产者发送确认和消费者接收确认:生产者发送确认:指生产者发送消息后到RabbitMQ服务器,如果RabbitMQ服务器收到消息,则会给我们生产者一个应答,用于告诉生产者该条消息已经成功到达RabbitMQ服务器中。消费者接收确认:用于确认消费者是否成功消费了该条消息。消息确认的实现方式主要有两种,一种是通过事务的方式(channel.txSele...原创 2019-10-28 12:21:22 · 1909 阅读 · 0 评论 -
SpringBoot整合RibbitMQ
1.搭建环境本文是基于Springboot-2.1.4.RELEASE整合RabbitMQ来进行讲解,在真实工作中,生产者和消费者一般是在不同的项目里,各自负责不同的职责,这里为了模拟真实环境,创建两个不同的项目进行演示。创建两个maven项目,消息生产者mq-rabbit-provider和消息消费者mq-rabbit-consumer,两个项目的pom.xml文件添加相同依赖:<?x...原创 2019-10-27 14:04:47 · 1012 阅读 · 0 评论 -
RabbitMQ五种工作模式
1.简介最近,在看一些消息中间件的内容,之前都没有好好学习一下消息中间件。本文将对RabbitMQ中五种常用的工作模式做一个简单的介绍和总结。RabbitMQ常用的工作模式有:简单队列模式、工作队列模式、发布订阅模式、路由模式、主题模式。本文参照RabbitMQ官网示例总结,详细可以到官网查看:https://www.rabbitmq.com/getstarted.html。2.简单队列模式(...原创 2019-10-26 23:37:07 · 2935 阅读 · 4 评论 -
RabbitMQ常用交换机模式
1.简介RabbitMQ中的交换机有Direct Exchange(直连交换机)、Topic Exchange(通配符交换机)、Fanout Exchange(广播式交换机)、Headers Exchange(Headers交换机)四种,常用的就前三种。2.Fanout Exchange(广播式交换机)模型图:这种模式类似于广播的方式,所有发送到Fanout Exchange交换机上的消息,...原创 2019-10-26 21:01:14 · 581 阅读 · 0 评论 -
RabbitMQ工作模式
1.RabbitMQ常见的工作模式RabbitMQ有以下几种工作模式 :1、Work queues 2、Publish/Subscribe 3、Routing 4、Topics 5、Header 6、RPC2.Work queues2.1.工作模式work queues与入门程序相比,多了一个消费端,两个消费端共同消费同一个队列中的消息。应用场景:对于任务过重或任务较多...原创 2019-10-24 23:34:42 · 553 阅读 · 1 评论 -
RabbitMQ四种交换机类型介绍
最新版本的RabbitMQ有四种交换机类型,分别是Direct exchange、Fanout exchange、Topic exchange、Headers exchange。1.Direct Exchange处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “abc”,则只有被标记为“abc”的消息才...原创 2019-10-24 22:16:20 · 972 阅读 · 0 评论 -
RabbitMQ基础
1.RabbitMQ初识1.1.RabbitMQ简介MQ全称为Message Queue,即消息队列, RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。RabbitMQ官方地址:http://www.rabbitmq.com/...原创 2019-10-22 22:58:35 · 333 阅读 · 0 评论 -
消息中间件专题(三)-ActiveMQ安装和配置
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。1.中间件、JMS、MQ、ActiveMQ之间的关系2.ActiveMQ的消息传递模式P2P (点对点)消息域使用 qu...原创 2019-06-26 23:14:47 · 261 阅读 · 0 评论 -
消息中间件专题(二)-MQ (Message Queue)
1.MQ 概念MQ全称为Message Queue,消息队列(MQ)是正确而又完整的 JMS实现,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。2.常见MQ实现产品2.1...原创 2019-06-26 22:51:19 · 286 阅读 · 0 评论 -
消息中间件专题(一)-JMS入门
1.中间件概念由于业务、机构和技术是不断变化的,因此为其服务的软件系统必须适应这样的变化。在合并、添加服务或扩展可用服务之后,公司可能无力负担重新创建信息系统所需的成本。正是在这个关键时刻,才需要集成新组件或者尽可能高效地扩展现有组件。要集成异类组件,最方便的方法不是将它们重新创建为同类元素,而是提供一个允许它们进行通信(不考虑它们之间的差异)的层。该层被称作中间件。2.中间件的分类...原创 2019-06-26 20:12:20 · 324 阅读 · 0 评论