rocketmq

Spring Cloud(11)——基于RocketMQ的Stream实现

一个人想着一个人 提交于 2019-12-06 06:08:40
基于RocketMQ的Stream实现 Spring Cloud Stream是一个消息收发的框架,它提供了一套标准,应用程序只需要按照它的标准进行消息的收发,而不用关注具体的实现机制。具体的实现可以基于不同的消息中间件进行不同的实现,比如Kafka的实现、RabbitMQ的实现、RocketMQ的实现等。官方已经提供了Kafka和RabbitMQ的实现,RocketMQ的实现由Alibaba负责。本文将基于RocketMQ的实现进行讲解。 Binder和Binding org.springframework.cloud.stream.binder.Binder 是Spring Cloud对消息容器的抽象,不同的消息容器有不同的实现,通过它可以屏蔽各消息容器的内部细节。 public interface Binder < T , C extends ConsumerProperties , P extends ProducerProperties > { /** * Bind the target component as a message consumer to the logical entity identified by * the name. * @param name the logical identity of the message source *

centos7部署rabbitMq

时光怂恿深爱的人放手 提交于 2019-12-06 05:22:51
目录 一、消息中间件相关知识... 1 1、概述... 1 2、消息中间件的组成... 1 3 消息中间件模式分类... 2 4 消息中间件的优势... 3 5 消息中间件应用场景... 4 6 消息中间件常用协议... 6 7 常见消息中间件MQ介绍... 7 7.1 RocketMQ.. 7 7.2 RabbitMQ.. 7 7.3 ActiveMQ.. 8 7.4 Redis. 8 7.5 Kafka. 8 7.6 ZeroMQ.. 9 8、主要消息中间件的比较... 9 二、部署RabbitMq. 10 1、安装一些依赖... 10 2、因为rabbitmq是基于erlang环境的,所以要先安装erlang环境... 10 3、安装rabbitMQ.. 11 一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。 2、消息中间件的组成 2.1 Broker 消息服务器,作为server提供消息核心服务 2.2 Producer 消息生产者,业务的发起方,负责生产消息传输给broker, 2.3 Consumer

RocketMQ快速入门

大城市里の小女人 提交于 2019-12-06 02:42:39
如何使用 1、引入 rocketmq-client <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.1.0-incubating</version> </dependency> 2、编写Producer DefaultMQProducer producer = new DefaultMQProducer("producer_demo"); //指定NameServer地址 producer.setNamesrvAddr("192.168.116.115:9876;192.168.116.116:9876"); //修改为自己的 /** * Producer对象在使用之前必须要调用start初始化,初始化一次即可 * 注意:切记不可以在每次发送消息时,都调用start方法 */ producer.start(); for (int i = 0; i < 997892; i++) { try { //构建消息 Message msg = new Message("TopicTest" /* Topic */, "TagA" /* Tag */, ("测试RocketMQ" + i).getBytes(RemotingHelper

分布式事务、重复消费、顺序消费

我的未来我决定 提交于 2019-12-05 22:16:19
前言 消息队列 在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在 消息队列 的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的离开,略感愧疚( 请允许我使用一下夸张的修辞手法 )。 于是在一个寂寞难耐的夜晚, 暖男 我痛定思痛,决定开始写 《吊打面试官》 系列,希望能帮助各位读者以后面试势如破竹,对面试官进行360°的反击,吊打问你的面试官,让一同面试的同僚瞠目结舌,疯狂收割大厂Offer! 捞一下 上一期,简单的介绍了一下 消息队列 的基础知识,里面有消息队列的应用场景,以及使用之后可能带来的问题,但是上期没对怎么解决这些问题做回答,因为要控制篇幅嘛(明明是自己觉得MQ写不了多少期,要多怼一期出来!渣男) 咳咳,我们言归正传,没看的朋友去看一下,有助于这期的阅读: 《吊打面试官》系列-消息队列基础 面试开始 一个风度翩翩,穿着格子衬衣的中年男子,拿着一个满是划痕的mac向你走来,看着铮亮的头,心想着肯定是尼玛顶级架构师吧!但是我们看过暖男敖丙的系列,腹有诗书气自华,虚都不虚。 没错小伙子还是我,上次话说一半你就溜了,这次我非得好好的问问你。 好的面试官,因为上次着急,敖丙的系列更新了所以赶回家去看了! 我信你个鬼,我们开始吧,上次说到了消息队列的消息重复消费

聊聊rocketmq的ConsumeFromWhere

泪湿孤枕 提交于 2019-12-05 18:12:21
序 本文主要研究一下rocketmq的ConsumeFromWhere ConsumeFromWhere rocketmq-common-4.5.2-sources.jar!/org/apache/rocketmq/common/consumer/ConsumeFromWhere.java public enum ConsumeFromWhere { CONSUME_FROM_LAST_OFFSET, @Deprecated CONSUME_FROM_LAST_OFFSET_AND_FROM_MIN_WHEN_BOOT_FIRST, @Deprecated CONSUME_FROM_MIN_OFFSET, @Deprecated CONSUME_FROM_MAX_OFFSET, CONSUME_FROM_FIRST_OFFSET, CONSUME_FROM_TIMESTAMP, } ConsumeFromWhere定义了CONSUME_FROM_LAST_OFFSET、CONSUME_FROM_FIRST_OFFSET、CONSUME_FROM_TIMESTAMP枚举值 computePullFromWhere rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/impl/consumer

RocketMq 测试

a 夏天 提交于 2019-12-05 17:47:37
向长辈致敬 : 蠍 : 卢兄 像 RocketMq 这个怎么测试? 卢兄 : 中间件的测试,要结合中间件的特点来测试 蠍 : 特点什么意思 卢兄: 比如,这个工具是作为发布消息和消费消息的,具有解耦的特点 卢兄: 那么你可以通过做交易,去看他是否能够正常发布消息,消费消息 卢兄: 最重要的还是要去测试他的性能 蠍 : 性能怎么测试 卢兄: 让其消息队列积累大量的订单 卢兄: 查看队列是否会假死,消费速度( 消费 TPS) 和订单情况 卢兄: 等等 蠍 : 让其消息队列积累大量的订单???大量的订单是从接口灌输的吗? 卢兄: 是的 卢兄: 之前我测试过这个,基本上积累几百万订单的时候,各种问题都会出来 蠍 : 消费速度 怎么查看 卢兄: 有 rabbitMQ 的 admin 控制台 卢兄: 部署一下可以直接查看 蠍 : OK 来源: https://www.cnblogs.com/guixie/p/11938226.html

主流消息队列组件的消息模型比较

非 Y 不嫁゛ 提交于 2019-12-05 17:19:22
其实,消息队列中队列二字带有误导性,现代消息队列组件的所能提供的功能已远远超出了数据结构中 队列 所能代表的范围。 消息队列的演进 队列模型 ![](https://img2018.cnblogs.com/blog/757665/201911/757665-20191126155432358-2113331446.png) 传统的队列功能,先进先出, 严格有序 。如果有多个消费者,则需要竞争消息,每份消息只能消费一次。 发布-订阅模型 ![](https://img2018.cnblogs.com/blog/757665/201911/757665-20191126155440937-1655999504.png) 发布者:消息的发送主 订阅者:消息的接收方 主题:存放消息的容器 此种模型可以使得同一份消息被多个消息者消费。让发布者和订阅者解耦 RabbitMQ消息模型 少数严格坚持使用队列模型的产品之一,通过引入exchange解决多消费者问题 RocketMQ消息模型 使用的是标准的发布-订阅模型。 几乎所有的MQ产品都有 ACK 来确保消息不会在传递过程中丢失,这个机制很好地保证了消息的可靠性,但为了有序性,在前一条消息被成功消费之前,下一条消息是不能被消费的。 RocketMQ也有队列(Queue)的概念, 每个主题包含多个队列,通过多个个队列来实现多实例并行生产和消费

浅谈消息队列及常见的消息中间件

佐手、 提交于 2019-12-05 14:52:40
浅谈消息队列及常见的消息中间件 前言 消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段。它具有 低耦合 、 可靠投递 、 广播 、 流量控制 、 最终一致性 等一系列功能。 当前使用较多的 消息队列 有 RabbitMQ 、 RocketMQ 、 ActiveMQ 、 Kafka 、 ZeroMQ 、 MetaMQ 等,而部分 数据库 如 Redis 、 MySQL 以及 phxsql 也可实现消息队列的功能。 正文 1. 消息队列概述 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流 ,并基于 数据通信 来进行分布式系统的集成。 通过提供 消息传递 和 消息排队 模型,它可以在 分布式环境 下提供 应用解耦 、 弹性伸缩 、 冗余存储 、 流量削峰 、 异步通信 、 数据同步 等等功能,其作为 分布式系统架构 中的一个重要组件,有着举足轻重的地位。 2. 消息队列的特点 2.1. 采用异步处理模式 消息发送者 可以发送一个消息而无须等待响应。 消息发送者 将消息发送到一条 虚拟的通道 ( 主题 或 队列 )上, 消息接收者 则 订阅 或是 监听 该通道。一条信息可能最终转发给 一个或多个 消息接收者,这些接收者都无需对 消息发送者 做出 同步回应 。整个过程都是 异步的 。 2.2. 应用系统之间解耦合 主要体现在如下两点:

RocketMQ简介

谁说胖子不能爱 提交于 2019-12-05 12:43:49
Notify(2007)--->Napoli(2010)--->MetaQ(2011)--->RocketMQ(2012) 第一代的Notify主要使用了 推模型 ,解决了事务消息。 第二代的MetaQ主要使用了 拉模型 ,解决了顺序消息和海量堆积。 RocketMQ 基于长轮询的拉取方式 ,兼有两者的优点。 来源: https://www.cnblogs.com/i-hard-working/p/11925499.html

源码分析RocketMQ消息轨迹

北慕城南 提交于 2019-12-05 12:04:13
目录 1、发送消息轨迹流程 1.1 DefaultMQProducer构造函数 1.2 SendMessageTraceHookImpl钩子函数 1.3 TraceDispatcher实现原理 2、 消息轨迹数据如何存储 2.1 使用系统默认的主题名称 2.2 用户自定义消息轨迹主题 本文沿着 《RocketMQ消息轨迹-设计篇》 的思路,从如下3个方面对其源码进行解读: 发送消息轨迹 消息轨迹格式 存储消息轨迹数据 @(本节目录) 1、发送消息轨迹流程 首先我们来看一下在消息发送端如何启用消息轨迹,示例代码如下: public class TraceProducer { public static void main(String[] args) throws MQClientException, InterruptedException { DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName",true); // @1 producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); for (int i = 0; i < 10; i++) try { { Message msg = new Message("TopicTest",