rocketmq

RocketMQ的使用

匿名 (未验证) 提交于 2019-12-02 23:32:01
1.如何发布? 1.1.业务层调用发送mq消息方法 asyncService.sendAliMqttMsg(); //相关配置 public static final String TOPIC_TEST = "qbkj_test_mqtt" ; public static final String TOPIC_QUEUE = "qbkj_queue_mqtt" ; public static final String TOPIC_OBSERVE = "qbkj_observe_mqtt" ; /** 排号类型-登记台 */ public static final String QUEUE_TYPE_REG = "1" ; /** 排号类型-接种台 */ public static final String QUEUE_TYPE_INJECT = "2" ; //TODO:登记台叫号 Map < String , Object > param = new HashMap < String , Object >(); param . put ( "type" , WebSocket . QUEUE_TYPE_REG ); param . put ( "reg" , callList ); param . put ( "queueno" , bsRegQueue . getQueue (

消息队列的面试题1(转)

北城以北 提交于 2019-12-02 23:11:01
消息队列的 面试题 1 问题: 为什么使用消息队列啊?消息队列有什么优点和缺点啊? kafka 、activemq、rabbitmq、rocketmq都有什么区别以及适合哪些场景? 1.为什么使用消息队列啊? 通用回答是:我们公司有个什么业务场景,这个业务场景有个什么技术挑战,如果不用MQ可能会很麻烦,但是你现在用了MQ之后带给了你很多的好处。 比较核心的有3个业务场景:解耦、异步、削峰 解耦:现场画个图来说明一下,A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人濒临崩溃中。。。再来点更加崩溃的事儿,A系统要时时刻刻考虑BCDE四个系统如果挂了咋办?我要不要重发?我要不要把消息存起来?头发都白了啊。。。 不用MQ的系统耦合场景: 使用了MQ之后的解耦场景: 异步:现场画个图来说明一下,A系统接收一个请求,需要在自己本地写库,还需要在BCD三个系统写库,自己本地写库要3ms,BCD三个系统分别写库要300ms、450ms、200ms。最终请求总延时是3 + 300 + 450 + 200 = 953ms,接近1s,用户感觉搞个什么东西,慢死了慢死了。 不用MQ的同步高延时请求场景: 使用了MQ进行异步之后的接口性能优化: 削峰:每天0点到11点,A系统风平浪静

2019 携程旅行网java面试笔试题 (含面试题解析)

假如想象 提交于 2019-12-02 22:52:15
本人3年开发经验、18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、滴滴等公司offer,岗位是Java后端开发,最终选择去了阿里巴巴。 面试了很多家公司,感觉大部分公司考察的点都差不多,所以将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助。另外,目前在阿里也做面试官的工作,身份从求职者变为面试官,看问题的很多角度也不一样,所以下文中既有求职者的视角,也有面试官的视角 面试流程   先说下面试流程,一般大公司都有3-4轮技术面,1轮的HR面。就阿里而言,我共经历了4轮技术面,前两轮主要是问基础和项目实现,第3轮是交叉面,两个面试官,主要是问项目实现和拓展。第4轮是部门老大面,主要就问一些架构、技术和业务的理解、个人发展比较抽象的东西了。 要注意的点 简历一到两页为最佳,将项目经历写2-3个左右就差不多了,一定要写最有亮点的项目 工作经历的起始时间要写清楚,另外大公司都有背调,不要合并或省略一些比较短的工作经历,影响的可能不只是这次面试,而是之后可能都无法进这家公司 博客没什么好文章,github没好项目就不要写在简历中了 对于面试官的问题,想清楚再回答,如果觉得需要的时间可能比较长,可以跟面试官说我思考下、我整理下思路之类的 面试的过程中注意语速和吐字,本人在做面试官后,发现很多人说话语速很快,或吐字不清

最新JAVA-ACE-架构师系列视频- RocketMQ(上下集)

匿名 (未验证) 提交于 2019-12-02 21:53:52
课程目标 培养高级Java工程师成为架构师的高端课程,学习主流互联网应用技术,学习应用架构设计。 课程目录 1001_RocketMQ_简介[免费观看]17:13 2002_RocketMQ_核心概念详解[免费观看]36:44 3003_RocketMQ_集群构建模型详解(一)27:47 4004_RocketMQ_集群构建模型详解(二)23:36 5005_RocketMQ_双主模式集群环境搭建39:05 7007_RocketMQ_Broker配置文件详解20:38 8008_RocketMQ_helloworld示例讲解34:29 9009_RocketMQ_整体架构概述详解15:36 10010_RocketMQ_Producer_API详解24:49 11011_RocketMQ_Producer_顺序消费机制详解24:37 12012_RocketMQ_Producer_事务消息机制详解38:15 13013_RocketMQ_Consumer_Push和Pull模式及使用详解28:21 14014_RocketMQ_Consumer_配置参数详解06:45 15015_RocketMQ_Consumer_重试策略详解33:08 16016_RocketMQ_Consumer_幂等去重策略详解33:48 17017_RocketMQ_消息模式及使用讲解14:12

RocketMQ初入门踩坑记

匿名 (未验证) 提交于 2019-12-02 21:52:03
本文主要是讲在Centos中安装RocketMQ并做简单的示例。如果你按照本文安装100%是可以成功的,如果按照阿里官方的说明,那只能呵呵了~ 官方地址为:https://rocketmq.apache.org/docs/quick-start/ 本人安装如下: //下载最新的rocketmq wget http : //apache-mirror.8birdsvideo.com/rocketmq/4.4.0/rocketmq-all-4.4.0-bin-release.zip //解压 unzip rocketmq - all - 4.4 . 0 - bin - release . zip //切换到mq目录 cd rocketmq - all - 4.4 . 0 - bin - release //name server 启动 nohup ./ bin / mqnamesrv - n 111.231 . XX . XX : 9876 & //-c conf/broker.conf autoCreateTopicEnable=true 参数需要带上,不然topic需要手动创建 nohup sh bin / mqbroker - n 111.231 . XX . XX : 9876 - c conf / broker . conf autoCreateTopicEnable =

利用zabbix监控RocketMQ

核能气质少年 提交于 2019-12-02 21:39:46
根据需求,监控三个指标: MQ进程、自定义监控项订阅组的未消费值Diff Total和TPS。 创建 MQ 状态的监控模板,进程监控利用zabbix自带的模板; 监控订阅组的Diff Total和TPS 因为每个 Nameserver的订阅组可能会实时改变,所以采用自动发现的方式获取所有的订阅组信息。再根据nameserver 和订阅组获取其Diff Total和TPS。 步骤: 编写订阅组自动发现和自定义监控项的脚本。 #!/bin/bash GroupInfo=`sh /opt/rocketmq/incubator-rocketmq-rocketmq-all-4.1.0-incubating/distribution/target/apache-rocketmq/bin/mqadmin consumerProgress -n "ip:port;ip:port;ip:port" 2>/dev/null` #echo "$GroupInfo" GroupName=`echo "$GroupInfo"|grep -v "#Group"|awk '{print $1}'` subgroup_discovery () { COUNT=`echo "$GroupName" |wc -l` INDEX=0 echo '{"data":[' echo "$GroupName" | while

消息队列的相关知识

孤街浪徒 提交于 2019-12-02 19:41:42
使用消息队列的好处以及使用场景还有引发的问题 1.流量削峰,用于短时间高并发流量情况,如秒杀活动,双11活动 在传统模式中,用户请求到达服务器后,再由服务器将数据写入数据库,在高并发情况下,流量暴增,数据库写入压力剧增,造成服务器响应时间漫长. 使用消息队列后,服务器将数据发送到消息队列服务器,然后将响应结果返回给用户,消息队列的数据由其消费者去读取并异步的写入到数据库.通过拉长数据处理时间来减少数据库瞬时压力达到流量削峰的目的 2,服务解耦 假设有这样一个场景, 服务A产生数据, 而服务B,C,D需要这些数据, 那么我们可以在A服务中直接调用B,C,D服务,把数据传递到下游服务即可 但是,随着我们的应用规模不断扩大,会有更多的服务需要A的数据,如果有几十甚至几百个下游服务,而且会不断变更,再加上还要考虑下游服务出错的情况,那么A服务中调用代码的维护会极为困难 使用消息队列后, A服务只需要向消息服务器发送消息,而不用考虑谁需要这些数据;下游服务如果需要数据,自行从消息服务器订阅消息,不再需要数据时则取消订阅即可 3.异步调用 考虑定外卖支付成功的情况 支付后要发送支付成功的通知,再寻找外卖小哥来进行配送,而寻找外卖小哥的过程非常耗时,尤其是高峰期,可能要等待几十秒甚至更长 这样就造成整条调用链路响应非常缓慢 而如果我们引入消息队列,订单数据可以发送到消息队列服务器

基于 raft 协议的 RocketMQ DLedger 多副本日志复制设计原理

心已入冬 提交于 2019-12-02 10:48:42
云里雾里,本篇将首先梳理一下 RocketMQ DLedger 多副本关于日志复制的三个核心流程图,然后再思考一下在异常情况下如何保证数据一致性。 1、RocketMQ DLedger 多副本日志复制流程图 1.1 RocketMQ DLedger 日志转发(append) 请求流程图 1.2 RocketMQ DLedger 日志仲裁流程图 1.3 RocketMQ DLedger 从节点日志复制流程图 2、RocketMQ DLedger 多副本日志复制实现要点 上图是一个简易的日志复制的模型:图中客户端向 DLedger 集群发起一个写请求,集群中的 Leader 节点来处理写请求,首先数据先存入 Leader 节点,然后需要广播给它的所有从节点,从节点接收到 Leader 节点的数据推送对数据进行存储,然后向主节点汇报存储的结果,Leader 节点会对该日志的存储结果进行仲裁,如果超过集群数量的一半都成功存储了该数据,主节点则向客户端返回写入成功,否则向客户端写入写入失败。 接下来我们来探讨日志复制的核心设计要点。 2.1 日志编号 为了方便对日志进行管理与辨别,raft 协议为一条一条的消息进行编号,每一条消息达到主节点时会生成一个全局唯一的递增号,这样可以根据日志序号来快速的判断数据在主从复制过程中数据是否一致,在 DLedger 的实现中对应

Spring Cloud Alibaba学习笔记(8) - RocketMQ安装与RocketMQ控制台

血红的双手。 提交于 2019-12-02 08:24:10
搭建RocketMQ 系统环境准备 64位操作系统,推荐使用Linux、Unix、MacOS 64位 JDK1.8+ Maven 3.2.x 适用于Broker服务器的4g +可用磁盘 下载与搭建 下载 从Apache RocketMQ的官网【http://rocketmq.apache.org/ 】可以进入RocketMQ的下载地址,目前最新的版本为4.5.2【http://rocketmq.apache.org/release_notes/release-notes-4.5.2/ 】,下载 Binary 文件即可 搭建 解压缩 unzip rocketmq-all-4.5.2-bin-release.zip 切换目录 cd rocketmq-all-4.5.2-bin-release 启动Name Server nohup sh bin/mqnamesrv & 验证是否启动成功 tail -f ~/logs/rocketmqlogs/namesrv.log 如果启动成功,可以看见如下日志: 2019-10-24 16:20:48 INFO FileWatchService - FileWatchService service started 2019-10-24 16:20:48 INFO main - The Name Server boot success.

rocketmq常用命令整理

我的梦境 提交于 2019-12-02 06:02:53
1. 启动namesrv和borker sh /opt/alibaba-rocketmq/bin/runserver.sh com.alibaba.rocketmq.namesrv.NamesrvStartup & sh /opt/alibaba-rocketmq/bin/mqbroker -n "mq001.eunke.com:9876" -c /opt/alibaba-rocketmq/conf/2m-noslave/broker-a.properties & 关闭namesrv和borker服务: sh bin/mqshutdown namesrv sh bin/mqshutdown broker 2. 查看某个topic的状态 sh bin/mqadmin topicStatus -n mq001.eunke.com:9876 -t message_push_topic 3. 查看某个消费组的消息堆积情况 sh bin/mqadmin consumerProgress -n mq001.eunke.com:9876 -g tms_sms_send_consumer Diff 为消息堆积数, 为0说明没有消息堆积。 来源: https://www.cnblogs.com/mhl1003/p/11733523.html