消息队列

分布式延时消息

北战南征 提交于 2019-12-11 23:28:23
背景 开源版的RocketMQ只提供了18个层级的消息队列延时,这个功能在开源版中显得特别鸡肋,但是在阿里云中的RocketMQ却提供了支持40天之内任意秒级延时队列,果然有些功能你只能充钱才能拥有。当然你或许想换一个开源的消息队列,在开源社区中消息队列延时消息很多都没有被支持比如:RabbitMQ,Kafka等,都只能通过一些特殊方法才能完成延时的功能。为什么这么多都没有实现这个功能呢?是因为技术难度比较复杂吗?接下来我们分析一下如何才能实现一个延时消息。 RocketMQ消息产生后,生产者希望在间隔一段时间后被消费的场景可以使用定时消息,RocketMQ目前不支持自定义延迟时间,但可以指定延迟等级,可以选择18个延迟等级,分别是对应延迟时间是1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h。 RocketMQ的延迟消息主题是SCHEDULE_TOPIC_XXXX,18个延迟级别对应18个消息队列,当消息投递到broker后,如果消息中指定了延迟等级(DelayTimeLevel),消息topic会更改为SCHEDULE_TOPIC_XXXX,queueId更改为延迟等级对应的消息队列,原有的topic和queueId会放到msg属性的REAL_TOPIC与REAL_QID中。 本地延时

spring中使用RabbitMQ

时光怂恿深爱的人放手 提交于 2019-12-11 18:41:58
常见的消息中间件产品: (1)ActiveMQ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。 (2)RabbitMQ AMQP协议的领导实现,支持多种场景。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。我们在本次课程中介绍 RabbitMQ的使用。 (3)ZeroMQ 史上最快的消息队列系统 (4)Kafka Apache下的一个子项目 。特点:高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。适合处理海量数据。 (5)RocketMQ 阿里巴巴 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行 分布式系统 的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见的角色大致也就有Producer(生产者)、Consumer(消费者)。 消息队列中间件是分布式系统中重要的组件,主要解决 应用解耦,异步消息,流量削锋等 问题,实现高性能,高可用,可伸缩和最终一致性架构。 ​ Spring-amqp是对AMQP协议的抽象实现,而spring-rabbit 是对协议的具体实现,也是目前的唯一实现

VxWorks 消息队列

末鹿安然 提交于 2019-12-11 14:16:09
消息队列 消息传递例子 消息创建: g_msgQID = msgQCreate("NC_MSG_Q_ID", C_MSGQ_MAX_MSGS, C_MSGQ_MAX_MSG_LENGTH); 消息发送: msgQSend(g_msgQzb2tcp, (BYTE*)&stZbDataAll, MSG_LEN_ZBDATA, NO_WAIT,MSG_PRI_NORMAL); msg_id buff buf_len type priority 消息接收: msgQReceive(g_msgQzb2tcp, RecDataFrZb, MSG_LEN_ZBDATA, NO_WAIT); msg_id buff buf_len type 来源: CSDN 作者: VxWorks_developer 链接: https://blog.csdn.net/m0_37585897/article/details/103490724

.NET Core简单使用RabbitMQ

谁说胖子不能爱 提交于 2019-12-11 12:41:41
原文: .NET Core简单使用RabbitMQ RabbitMQ简介  RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整的可复用的企业级消息队,RabbitMQ可以实现点对点,发布订阅等消息处理模式。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持Linux,windows,macOS,FreeBSD等操作系统,同时也支持很多语言,如:Python,Java,Ruby,PHP,C#,JavaScript,Go,Elixir,Objective-C,Swift等。 RabbitMQ安装 我使用的环境是ubuntu18.04, RabbitMq需要Erlang语言的支持,在安装RabbitMq之前需要安装Erlang sudo apt-get install erlang-nox 更新源 sudo apt-get update 安装RabbitMq sudo apt-get install rabbitmq-server 添加users用户,密码设置为admin sudo rabbitmqctl add_user users admin 给添加的用户赋予权限 sudo rabbitmqctl set_user_tags users administrator 赋予virtual

【消息队列】RabbitMQ知识点

a 夏天 提交于 2019-12-11 12:38:22
一、消息队列学习 MQ是一个互联网架构中常见的解耦利器。 什么时候不使用MQ? 上游实时关注执行结果 什么时候使用MQ? 1)数据驱动的任务依赖,多个任务需要轮流执行,轮流订阅上一个任务。 2)上游不关心多下游执行结果,上游执行完发送到MQ,多下游订阅MQ。 3)异步返回执行时间长 死信队列多了一个过期的机制,到期会自动去尝试消费,通过死信交换机做匹配,选择想要的消费失败的消息。 https://ke.qq.com/course/288116#term_id=100341172 入门视频 消息中间件是在消息传输过程中保存消息的容器。队列的主要目的是提供路由并保证消息的传递。 特点: 1异步处理模式 2多个应用程序调用关系为松耦合关系 传递模型: 1、点多点模型PTP 每个消息只用一个消费者 发送者和接收者没有时间依赖 接受者确认消息接受和处理成功 2、发布-订阅模型Pub/Sub 一对多关系,通过订阅主题,发布者建立一个订阅,订阅者保持持续的活动状态以接收消息。 每个消息可以有多个订阅者 客户端只有订阅后才能接收到消息,有时间依赖。 持久订阅 订阅关系建立后,消息不会消失,不管订阅者是否都在线 非持久订阅 订阅者为了接受消息,必须一直在线 典型的应用案例 1、注册时发送邮件或发送短信 2、日志分析使用,多个服务产生的数据发送到中间件发送到分析服务。 3、消息复制,用于跨机房数据传输

震惊了!原来这才是kafka!

北城以北 提交于 2019-12-11 06:49:57
简介 kafka是一个分布式消息队列。具有高性能、持久化、多副本备份、横向扩展能力。生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。一般在架构设计中起到解耦、削峰、异步处理的作用。 kafka对外使用topic的概念,生产者往topic里写消息,消费者从读消息。为了做到水平扩展,一个topic实际是由多个partition组成的,遇到瓶颈时,可以通过增加partition的数量来进行横向扩容。单个parition内是保证消息有序。 每新写一条消息,kafka就是在对应的文件append写,所以性能非常高。 kafka的总体数据流是这样的: kafka data flow 大概用法就是,Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉去指定Topic的消息,然后进行业务处理。 图中有两个topic,topic 0有两个partition,topic 1有一个partition,三副本备份。可以看到consumer gourp 1中的consumer 2没有分到partition处理,这是有可能出现的,下面会讲到。 关于broker、topics、partitions的一些元信息用zk来存,监控和路由啥的也都会用到zk。 生产 基本流程是这样的: kafka sdk product flow.png 创建一条记录

Linux(CENTOS7) RabbitMq安装

懵懂的女人 提交于 2019-12-11 02:49:30
RabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1、安装Erlang   因为rabbitMQ是Erlang语言编写的,所以我们首先需要安装Erlang rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm 2、安装rabbitMQ-server rpm -Uvh http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server-3.5.6-1.noarch.rpm 3、查看是否安装成功 rpm -qa|grep rabbitmq ​​ 4、开启rabbit-server 开启:service rabbitmq-server start 关闭:service rabbitmq-server stop ​ 这样虽然我们已经将rabbitmq的服务正常启动了,但是我们在物理机的浏览器中输入ip:15672时,并不能连接,因为我们还没有配置维护插件和开启远程连接 5、查看状态

STM32CubeIDE+FreeRTOS消息队列实验

拈花ヽ惹草 提交于 2019-12-11 01:35:49
新建工程RTOS_Message,配置如下: Ctrl + S生成代码 修改代码, 1,在main.h中添加 //添加include /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "stdio.h" /* USER CODE END Includes */ 2,在main.c中添加 //添加_write函数重定义 /* USER CODE BEGIN PFP */ int _write(int file , char *ptr,int len) { int i = 0; for(i = 0;i<len;i++) ITM_SendChar((*ptr++)); return len; } /* USER CODE END PFP */ 3,在main.c中修改3个任务入口函数的内容 /* USER CODE BEGIN Header_StartDefaultTask */ /** * @brief Function implementing the defaultTask thread. * @param argument: Not used * @retval None */ /*

【真实面试经历】我和阿里面试官的一次“邂逅”(附问题详解)

我只是一个虾纸丫 提交于 2019-12-10 18:12:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文的内容都是根据读者投稿的真实面试经历改编而来,首次尝试这种风格的文章,花了几天晚上才总算写完,希望对你有帮助。。已经收录自 Guide 哥开源的 JavaGuide 中。 本文主要涵盖下面的内容: 分布式商城系统:架构图讲解; 消息队列相关:削峰和解耦; Redis 相关:缓存穿透问题的解决; 一些基础问题: 网络相关:1.浏览器输入 URL 发生了什么? 2.TCP 和 UDP 区别? 3.TCP 如何保证传输可靠性? Java 基础:1. 既然有了字节流,为什么还要有字符流? 2.深拷贝 和 浅拷贝有啥区别呢? 下面是正文! 面试开始,坐在我前面的就是这次我的面试官吗?这发量看着根本不像程序员啊?我心里正嘀咕着,只听见面试官说:“小伙,下午好,我今天就是你的面试官,咱们开始面试吧!”。 第一面开始 面试官: 我也不用多说了,你先自我介绍一下吧,简历上有的就不要再说了哈。 我: 内心 os:"果然如我所料,就知道会让我先自我介绍一下,还好我看了 JavaGuide ,学到了一些套路。套路总结起来就是: 最好准备好两份自我介绍,一份对 hr 说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节,项目经验,经历那些就一语带过。 所以

rabbitMQ消息队列

放肆的年华 提交于 2019-12-10 18:02:19
一、MQ简介 在介绍RabbitMQ之前实现要介绍一下MQ,MQ是什么? MQ全称是Message Queue,可以理解为消息队列的意思,简单来说就是消息以管道的方式进行传递。 RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,用Erlang语言的。 二、使用场景 在我们秒杀抢购商品的时候,系统会提醒我们稍等排队中,而不是像几年前一样页面卡死或报错给用户。 像这种排队结算就用到了消息队列机制,放入通道里面一个一个结算处理,而不是某个时间断突然涌入大批量的查询新增把数据库给搞宕机,所以RabbitMQ本质上起到的作用就是削峰填谷,为业务保驾护航。 三、为什么选择RabbitMQ 现在的市面上有很多MQ可以选择,比如ActiveMQ、ZeroMQ、Appche Qpid,那问题来了为什么要选择RabbitMQ? 除了Qpid,RabbitMQ是唯一一个实现了AMQP标准的消息服务器; 可靠性,RabbitMQ的持久化支持,保证了消息的稳定性; 高并发,RabbitMQ使用了Erlang开发语言,Erlang是为电话交换机开发的语言,天生自带高并发光环,和高可用特性; 集群部署简单,正是应为Erlang使得RabbitMQ集群部署变的超级简单; 社区活跃度高,根据网上资料来看,RabbitMQ也是首选