rocketmq

rocketMq 事务消息

↘锁芯ラ 提交于 2020-04-08 14:35:09
事务消息 实现TransactionListener package com.topnet.demo.mq.Transaction; import java.io.UnsupportedEncodingException; import java.util.HashMap; import java.util.Map; import org.apache.rocketmq.client.producer.LocalTransactionState; import org.apache.rocketmq.client.producer.TransactionListener; import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.remoting.common.RemotingHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSON;

阿里分布式消息中间件:《RocketMQ开发指南》pdf高清版

你离开我真会死。 提交于 2020-04-07 16:44:51
本文档旨在描述 RocketMQ 的多个关键特性的实现原理,幵对消息中间件遇到的各种问题迕行总结,阐述RocketMQ 如何解决返些问题。文中主要引用了 JMS 规范不 CORBA Notification 规范,规范为我们设计系统挃明了方吐,但是仍有丌少问题规范没有提及,对亍消息中间件又至关重要。RocketMQ 幵丌遵循任何规范,但是参考了各种规范不同类产品的设计思想。 主页 目录 部分内容截图 RocketMQ Overview RocketMQ存储特点 RocketMQ关键特性 RocketMQ通信组件 Producer最佳实践 获取方法 点点这个链接免费获取:本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门: https://mp.weixin.qq.com/s/osB-BOl6W-ZLTSttTkqMPQ 来源: https://www.cnblogs.com/yunxi520/p/12654020.html

阿里分布式消息中间件:《RocketMQ开发指南》pdf高清版

与世无争的帅哥 提交于 2020-04-07 16:16:50
本文档旨在描述 RocketMQ 的多个关键特性的实现原理,幵对消息中间件遇到的各种问题迕行总结,阐述RocketMQ 如何解决返些问题。文中主要引用了 JMS 规范不 CORBA Notification 规范,规范为我们设计系统挃明了方吐,但是仍有丌少问题规范没有提及,对亍消息中间件又至关重要。RocketMQ 幵丌遵循任何规范,但是参考了各种规范不同类产品的设计思想。 主页 目录 部分内容截图 RocketMQ Overview RocketMQ存储特点 RocketMQ关键特性 RocketMQ通信组件 Producer最佳实践 获取方法 点点这个链接免费获取: 【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 来源: oschina 链接: https://my.oschina.net/u/4441013/blog/3223232

五分钟学后端技术:如何学习Java工程师必知必会的消息队列

扶醉桌前 提交于 2020-04-06 05:47:41
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 什么是消息队列 “RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词,可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列大门的一板砖。 根据百度百科的说法,“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。` 为什么要使用消息队列 我觉得使用消息队列主要有两点好处: 1.通过异步处理提高系统性能(削峰、减少响应所需时间); 2.降低系统耦合性。如果在面试的时候你被面试官问到这个问题的话,一般情况是你在你的简历上涉及到消息队列这方面的内容,这个时候推荐你结合你自己的项目来回答。 《大型网站技术架构》第四章和第七章均有提到消息队列对应用性能及扩展性的提升。 在我平时的日常工作中,用到消息队列的场景可不少,比如,我有一个定时任务需要在A应用每天7点开始调度,那么定时任务系统如何告诉这个A应用呢

搭建RocketMQ集群

99封情书 提交于 2020-04-03 04:48:19
一、环境及准备 集群环境: 软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器 [root@es1 ~]# crontab -l #为了方便直接使用公网服务器 #update time */5 * * * * /usr/bin/rdate -s time-b.nist.gov &>/dev/null 安装配置Java环境 参考此文章配置jvm部分https://www.cnblogs.com/panwenbin-logs/p/10369402.html 配置hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.150.134 rocketmq-nameserver1 172.16.150.134 rocketmq-master1 172.16.150.135 rocketmq-nameserver2 172.16.150.135 rocketmq-master2 172.16.150.136 rocketmq

RocketMQ高可用集群

风流意气都作罢 提交于 2020-04-02 06:36:36
集群支持:   RocketMQ天生对集群的支持非常友好 单Master:   优点:除了配置简单没什么优点   缺点:不可靠,该机器重启或宕机,将导致整个服务不可用 多Master:   优点:配置简单,性能最高   缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性 多Master多Slave异步模式:   每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级   优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预   缺点:Master宕机或磁盘损坏时会有少量消息丢失 多Master多Slave同步模式:   每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功   优点:服务可用性与数据可用性非常高   缺点:性能比异步集群略低,当前版本主宕备不能自动切换为主。   需要注意的是,在RocketMQ里面,1台机器只能要么是Master,要么是Slave。这个在初始的机器配置里面,就定死了。不会像kafka那样存在master动态选举的功能。其中Master的broker id = 0,Slave的broker id > 0

五分钟学后端技术:如何学习Java工程师必知必会的消息队列

我的未来我决定 提交于 2020-03-31 23:01:32
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 什么是消息队列 “RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词,可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列大门的一板砖。 根据百度百科的说法,“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。` 为什么要使用消息队列 我觉得使用消息队列主要有两点好处: 1.通过异步处理提高系统性能(削峰、减少响应所需时间); 2.降低系统耦合性。如果在面试的时候你被面试官问到这个问题的话,一般情况是你在你的简历上涉及到消息队列这方面的内容,这个时候推荐你结合你自己的项目来回答。 《大型网站技术架构》第四章和第七章均有提到消息队列对应用性能及扩展性的提升。 在我平时的日常工作中,用到消息队列的场景可不少,比如,我有一个定时任务需要在A应用每天7点开始调度,那么定时任务系统如何告诉这个A应用呢

阿里消息队列中间件 RocketMQ源码解析:Message发送&接收

对着背影说爱祢 提交于 2020-03-30 21:02:52
🙂🙂🙂关注 微信公众号:【芋艿的后端小屋】 有福利: RocketMQ / MyCAT / Sharding-JDBC 所有 源码分析文章列表 RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址 您对于源码的疑问每条留言 都 将得到 认真 回复。 甚至不知道如何读源码也可以请教噢 。 新的 源码解析文章 实时 收到通知。 每周更新一篇左右 。 认真的 源码交流微信群。 1、概述 2、Producer 发送消息 DefaultMQProducer#send(Message) DefaultMQProducerImpl#sendDefaultImpl() DefaultMQProducerImpl#tryToFindTopicPublishInfo() MQFaultStrategy MQFaultStrategy LatencyFaultTolerance LatencyFaultToleranceImpl FaultItem DefaultMQProducerImpl#sendKernelImpl() 3、Broker 接收消息 SendMessageProcessor#sendMessage AbstractSendMessageProcessor#msgCheck DefaultMessageStore#putMessage 4

还不知道事务消息吗?这篇文章带你全面扫盲!

旧城冷巷雨未停 提交于 2020-03-30 08:16:23
在分布式系统中,为了保证数据一致性是必须使用分布式事务。分布式事务实现方式就很多种,今天主要介绍一下使用 RocketMQ 事务消息,实现分布事务。 文末有彩蛋,看完再走 为什么需要事务消息? 很多同学可能不知道事务消息是什么,没关系,举一个真实业务场景,先来带你了解一下普通的消息存在问题。 上面业务场景中,当用户支付成功,将会更新支付订单,然后发送 MQ 消息。手续费系统将会通过拉取消息,计算手续费然后保存到另外一个手续费数据库中。 由于计算手续费这个步骤可以离线计算,所以这里采用 MQ 解耦支付与计算手续费的流程。 流程主要涉及三个步骤: 更新订单数据 发送消息给 MQ 手续费系统拉取消息 上面提到的步骤,任何一个都会失败,如果我们没有处理,就会使两边数据不一致,将会造成下面两种情况: 订单数据更新了,手续费数据没有生成 手续费数据生成,订单数据却没有更新 这可是涉及到真正的钱,一旦少计算,就会造成 资损 ,真的赔不起! 对于最后一步来讲,比较简单。如果消费消息失败,只要没有提交消息确认,MQ 服务端将会自动重试。 最大的问题 在于我们无法保证更新操作与发送消息一致性。无论我们采用先更新订单数据,再发送消息,还是先发送消息,再更新订单数据,都在存在一个成功,一个失败的可能。 如下所示,采用先发送消息,然后再更新数据库的方式。 上面流程消息发送成功之后,再进行本地事务的提交

了解一下项目中所用到的开发工具(扫盲篇)

╄→尐↘猪︶ㄣ 提交于 2020-03-28 18:20:15
最近做的系统中有运用到类似这些页面化的工具kibana、rocketmq,swagger,quickBI,ES,Flowable,Dubbo admin,Rancher,xxjob,有很多新奇的东西不清楚怎么办,当然问度娘 --kibana   我在运用kibana过程中最多的是查报错日志,通过env,project,x_path和crid进行查询,定位报错日志。 实际百度到的作用不仅仅我所了解的功能 Kibana 是为 Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化,以图标的形式展现出来。 Kibana 的使用场景,应该集中在两方面: 实时监控 通过 histogram 面板,配合不同条件的多个 queries 可以对一个事件走很多个维度组合出不同的时间序列走势。时间序列数据是最常见的监控报警了。 问题分析 关于 elk 的用途,可以参照其对应的商业产品 splunk 的场景:使用 Splunk 的意义在于使信息收集和处理智能化。而其操作智能化表现在: 搜索,通过下钻数据排查问题,通过分析根本原因来解决问题; 实时可见性,可以将对系统的检测和警报结合在一起,便于跟踪 SLA 和性能问题; 历史分析,可以从中找出趋势和历史模式