今天要给大家介绍RocketMQ中的两个功能,一个是"广播",这个功能是比较基础的,几乎所有的mq产品都是支持这个功能的:另外一个是"延迟消费",这个应该算是RocketMQ的特色功能之一了吧.接下来,我们就分别看一下这两个功能. 广播 广播是把消息发送给订阅了这个主题的所有消费者.这个定义很清楚,但是这里边的知识点你都掌握了吗?咱们接着说"广播"的机会,把消费者这端的内容好好和大家说说. 首先,消费者端的概念中,最大的应该是消费者组,一个消费者…
终于到了今天了,终于要讲RocketMQ最牛X的功能了,那就是事务消息.为什么事务消息被吹的比较热呢?近几年微服务大行其道,整个系统被切成了多个服务,每个服务掌管着一个数据库.那么多个数据库之间的数据一致性就成了问题,虽然有像XA这种强一致性事务的支持,但是这种强一致性在互联网的应用中并不适合,人们还是更倾向于使用最终一致性的解决方案,在最终一致性的解决方案中,使用MQ保证各个系统之间的数据一致性又是首选. RocketMQ为我们提供了事务消息的功能,它使得我们投放消息和其他的一些操作保持一个整…
RocketMQ简介 RocketMQ是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的.高可靠.万亿级容量.灵活可伸缩的消息发布与订阅服务. 它前身是MetaQ,是阿里基于Kafka的设计使用Java进行自主研发的.在2012年,阿里将其开源, 在2016年,阿里将其捐献给Apache软件基金会(Apache Software Foundation,简称为ASF),正式成为孵化项目.2017 年,Apache软件基金会宣布RocketMQ已孵化成为 Apache顶级项目(Top…
新的阅读体验:http://www.zhouhong.icu/post/157 一.业务需求 需要实现一个提前二十分钟通知用户去做某件事的一个业务,拿到这个业务首先想到的最简单得方法就是使用Redis监控Key值:在排计划时候计算当前时间与提前二十分钟这个时间差,然后使用一个唯一的业务Key压入Redis中并设定好过期时间,然后只需要让Redis监控这个Key值即可,当这个Key过期后就可以直接拿到这个Key的值然后实现发消息等业务. 关于Redis实现该业务的具体实现在之前我已经记过一篇笔记,…
痛点背景 业务场景 假设有这么一个需求,用户下单后如果30分钟未支付,则该订单需要被关闭.你会怎么做? 之前方案 最简单的做法,可以服务端启动个定时器,隔个几秒扫描数据库中待支付的订单,如果(当前时间-订单创建时间)>30分钟,则关闭订单. 方案评估 优点:是实现简单,缺点呢? 缺点:定时扫描意味着隔个几秒就得查一次数据库,频率高的情况下,如果数据库中订单总量特别大,这种高频扫描会对数据库带来一定压力,待付款订单特别多时(做个爆品秒杀活动,或者啥促销活动),若一次性查到内存中,容易引起宕机,需要…
目录 前言 环境 具体实现 前言 RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,记录下SpringBoot整合RocketMQ的方式,RocketMQ的安装可以查看:Windows下安装RocketMQ 环境 SpringBoot2.5.3 + RocketMQ4.7.0 具体实现 pom.xml <!-- rocketmq --> <dependency> <groupId>org.apache.rocketmq</groupId> <…
概述 在上文中,我们讨论了消费者对于消息拉取的实现,对于 RocketMQ 这个黑盒的心脏部分,我们顺着消息的发送流程已经将其剖析了大半部分.本章我们不妨乘胜追击,接着讨论各种不同的消息的原理与实现. 事务消息 概念 RocketMQ 中的事务消息功能,实际上是 分布式事务中的本地事务表 的实现,只不过,在这里用消息中间件来代替了数据库,同时也帮我们做好了回查的操作. 在这点上,RocketMQ 和 Kafka 是截然不同的,kafka 的事务是用来实现 Exacltly Once 语义,且该语…
目录 1. 使用场景 2. 基于消息头的路由 2.1 使用JSON提交订单的消息 2.2 使用XML提交订单的消息 2.3 使用Choice组件判断订单格式 3. 基于消息内容的路由 4. 其他控制流向的组件 本篇主要介绍在Mule ESB中控制消息的流向.控制消息的流向有很多不同的场景,数据的路由,数据的拆分和组合,数据的排序,数据的分发等.数据路由是ESB平台上最基本,也是最重要的功能之一,完整的ESB平台都会有相对应的功能.ESB基本的功能可分成消息路由,消息传输和消息转换等,后续几篇Mu…
1. 概述 老话说的好:对待工作要有责任心,不仅要完成自己的部分,还要定期了解整体的进展. 言归正传,我们在开发产品时,常常会遇到一段时间后检查状态的场景,例如:用户下单场景,如果订单生成30分钟后,用户还没有完成支付,则系统自动将订单关闭. 在没有消息中间件之前,常常是启动一个定时程序,固定间隔的去检查,不仅耗费系统资源,还会有较大的时间误差. 今天我们就来聊一下 RabbitMQ 的 延迟消息 功能的使用. RabbitMQ 镜像模式集群的搭建,可参见我的另一篇文章<RabbitMQ 3.9…
原文:https://mp.weixin.qq.com/s/lpsQ3dEZHma9H0V_mcxuTw 一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 六.负载均衡 七.集群方式 八.管理界面 九.可用性 十.消息重复 十一.吞吐量TPS 十二.订阅形式和消息分发 十三.顺序消息 十四.消息确认 十五.消息回溯 十六.消息重试 十七.并发度 本文将从,Kafka.RabbitMQ.ZeroMQ.RocketMQ.ActiveMQ 17 个方面综合对比作为消息队列使用时的…
来源:http://t.cn/RVDWcfe 一.资料文档 Kafka:中.有kafka作者自己写的书,网上资料也有一些.rabbitmq:多.有一些不错的书,网上资料多.zeromq:少.没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍.rocketmq:少.没有专门写rocketmq的书,网上的资料良莠不齐,官方文档很简洁,但是对技术细节没有过多的描述.activemq:多.没有专门写activemq的书,网上资料多. 二.开发语言 Kafka:Scala rabbitmq…
在上一章节中,我们讲解了RocketMQ的基本介绍,作为MQ最重要的就是消息的使用了,今天我们就来带大家如何玩转MQ的消息. 消息中间件,英文Message Queue,简称MQ.它没有标准定义,一般认为:消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成. 高效: 对于消息的处理处理速度快,RocketMQ可以达到单机10万+的并发. 可靠: 一般消息中间件都会有消息持久化机制和其他的机制确保消息不丢失. 异步:…
Netty4.x中文教程系列(五)编解码器Codec 上一篇文章详细解释了ChannelHandler的相关构架设计,版本和设计逻辑变更等等. 这篇文章主要在于讲述Handler里面的Codec,也就是相关的编解码器.原本想把编解码器写在上一篇文章里面的.后来想想Netty里面的编解码器太多了.想要一次写完比较困难.于是重新开了一篇文章来专门写这个. 1.     Hello World !实例中的使用 在这里先讲一下我们第一篇文章里面的实例使用到编解码器. 1.1 DelimiterBased…
laravel的延迟消息队列 这篇来自于看到朋友转的58沈剑的一篇文章:1分钟实现"延迟消息"功能(http://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651959961&idx=1&sn=afec02c8dc6db9445ce40821b5336736&chksm=bd2d07458a5a8e5314560620c240b1c4cf3bbf801fc0ab524bd5e8aa8b8ef036cf7…
概述 顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序. 顺序图是一种详细表示对象之间以及对象与系统外部的参与者之间动态联系的图形文档.它详细而直观地表现了一组相互协作的对象在执行一个(或少量几个)用况时的行为依赖关系,以及操作和消息的时序关系.类图对对象之间的消息(交互情况)表达不够详细:详细说明对消息的表达虽然详细,但不够直观:顺序图既详细又直观,但通常只能表示少数几个对象之间的交互. 时序图基…
WCF开发实战系列五:创建WCF客户端程序 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 在前面的三篇文章中我们分别介绍了WCF服务的三种载体:IIS.Self-Host.Windows Service Host.当WCF编写完成后我们一般要通过这三种方式的一种发布WCF服务,当WCF服务发布后,我们就可以编写客户程序来与服务的终结点进行通信.这篇文章我们主要来介绍如何编写客户程序. 前提:1.事先建立好一个WCF服务2.使用上面任何一种方式发布WCF.在这里我们…
今天我们再来看看RocketMQ的另外两个小功能,消息的批量发送和过滤.这两个小功能提升了我们使用RocketMQ的效率. 批量发送 以前我们发送消息的时候,都是一个一个的发送,这样效率比较低下.能不能一次发送多个消息呢?当然是可以的,RocketMQ为我们提供了这样的功能.但是它也有一些使用的条件: 同一批发送的消息的Topic必须相同: 同一批消息的waitStoreMsgOK 必须相同: 批量发送的消息不支持延迟,就是上一节说的延迟消息: 同一批次的消息,大小不能超过1MiB: 好了,只要…
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来.<CSS 魔法系列>继续给大家带来 CSS 在图形绘制中的创新使用. 您可能感兴趣的相关文章 CSS3 在网页设计中的20佳惊艳应用 推荐12个漂亮的 CSS3 按钮实现方案 推荐10个非常优秀的 CSS3 开发工具 分享50个漂亮的 CSS3 最佳应用示例 24款非常实用的 CSS3 工具终极收…
WCF编程系列(五)元数据   示例一中我们使用了scvutil命令自动生成了服务的客户端代理类: svcutil http://localhost:8000/?wsdl /o:FirstServiceClient.cs 命令中http://localhost:8000/?wsdl连接返回一个XML,该XML即为元数据:用以描述如何与服务的终结点进行交互.正因为有元数据的存在,svcutil命令才能自动生成客户端代理类. 元数据遵循Web服务描述语言(WSDL)标准,所以可被多种语言支持,除WC…
JVM系列五:JVM监测&工具[整理中]  http://www.cnblogs.com/redcreen/archive/2011/05/09/2040977.html 前几篇篇文章介绍了介绍了JVM的参数设置并给出了一些生产环境的JVM参数配置参考方案.正如之前文章中提到的JVM参数的设置需要根据应用的特性来进行设置,每个参数的设置都需要对JVM进行长时间的监测,并不断进行调整才能找到最佳设置方案.本文将介绍如果通过工具及Java api来监测JVM的运行状态,并详细介绍各工具的使用方法.…
原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC)的GIS专业理论知识. 5.其他相关知识. 通过前面几篇文章介绍了…
原文:VSTO之旅系列(五):创建Outlook解决方案 本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结 一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案的,所以本专题中将为大家介绍下Outlook相关的内容.我们从Visual Studio 2010 中Office节点下的模板中我们可以看到,Outlook只有外接程序的模板,并没有提供像Word或Excel这样的文档级的模板,所以VSTO没有为Outlook解决方案创建宿主项和宿主控件(Excel…
原文:系列五AnkhSvn AnkhSvn介绍 AnkhSVN是一款在VS中管理Subversion的插件,您可以在VS中轻松的提交.更新.添加文件,而不用在命令行或资源管理器中提交.而且该插件属于开源项目. AnkhSvn安装下载完毕后,进行安装,安装向导安装即可,如下步骤.[步骤1]安装界面,见图. [步骤2]安装成功 AnkhSvn连接VisualSvn Server 下载源项目安装成功后,打开vs2008将会产生如下菜单,见图. 如果没有此菜单,请查看工具下的选项中的source con…
java多线程系列(五)---synchronized ReentrantLock volatile Atomic 原理分析 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 java多线程系列(三)之等待通知机制 java多线程系列(四)之ReentrantLock的使用 Synchronized 原理 synchronized关键字是通过字节码指令来实现的 synchronized关键…
需求背景 用户下订单成功之后隔20分钟给用户发送上门服务通知短信 订单完成一个小时之后通知用户对上门服务进行评价 业务执行失败之后隔10分钟重试一次 类似的场景比较多 简单的处理方式就是使用定时任务 假如数据比较多的时候 有的数据可能延迟比较严重,而且越来越多的定时业务导致任务调度很繁琐不好管理. 队列设计 目前可以考虑使用rabbitmq来满足需求 但是不打算使用,因为目前太多的业务使用了另外的MQ中间件. 开发前需要考虑的问题? 及时性 消费端能按时收到 同一时间消息的消费权重 可靠性 消息…
java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 目录 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)---Integer java基础解析系列(三)---HashMap java基础解析系列(四)---LinkedHashMap的原理及LRU算法的实现 这是我的博客目录,欢迎阅读 HashMap造成的死循环 resize分析 void resize…
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_007_scrapy01.html scrapy爬虫学习系列二:scrapy简单爬虫样例学习: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_007_scrapy02.html scrapy爬虫学习系列三:scrapy部署到scrapyh…
今天是我们介绍数组系列文章的第五篇,也是我们数组系列的最后一篇文章,只是数据系列的结束,所以大家不用担心,我们会持续的更新干货文章. 生命不息,更新不止! 今天我们就不那么多废话了,直接干货开始. 我们在<Javascript数组系列一之栈与队列>中描述我们是如何利用 push.pop.shift.unshift方法进行数组单个元素的添加与删除. 但是光有单个元素的删除恐怕难以满足我们的应用场景,那么那么如何进行数组元素的批量操作?let's go! 数组的增删改 slice 该方法会复制数组…
需求背景 用户下订单成功之后隔20分钟给用户发送上门服务通知短信 订单完成一个小时之后通知用户对上门服务进行评价 业务执行失败之后隔10分钟重试一次 类似的场景比较多 简单的处理方式就是使用定时任务 假如数据比较多的时候 有的数据可能延迟比较严重,而且越来越多的定时业务导致任务调度很繁琐不好管理. 队列设计 目前可以考虑使用rabbitmq来满足需求 但是不打算使用,因为目前太多的业务使用了另外的MQ中间件. 开发前需要考虑的问题? 及时性 消费端能按时收到 同一时间消息的消费权重 可靠性 消息…
准备做一个禁言自动解除的功能,立马想到了订单的超时自动解除,刚好最近在看RabbitMQ的实现,于是想用它实现,查询了相关文档发现确实可以实现,动手编写了这篇短文. 准备工作 1.Erlang安装请参考windows下安装Erlang 2.mq安装晴参考RabbitMQ安装 3.延迟消息插件安装rabbitmq_delayed_message_exchange #插件下载地址(选择与mq版本匹配的插件版本) http://www.rabbitmq.com/community-plugins.ht…