消息中间件
文章平均质量分 74
程序员老石
当你的才华满足不了你的野心,你应该滚去学习
展开
-
Kafka生产者(二)
1、例如我们实现一个分区器实现,发送过来的数据中如果包含 atguigu,就发往 0 号分区,不包含 atguigu,就发往 1 号分区。2、实现步骤(1)定义类实现Partitioner 接口。(2)重写 partition()方法。import org/*** @Copyright: 自定义分区器// 获取数据 atguigu hello String msgValues = value . toString();原创 2024-08-04 23:38:07 · 1105 阅读 · 0 评论 -
kafka基础教程(一)
zk是整个集群中哪些服务器上线了,记录服务器节点信息的状态,还会记录每个分区谁是leader,后续消费的时候直接找leader消费。表示kafka在整个集群中的唯一身份标识,不可重复。(1)修改server.properties文件。zookeeper.connect属性配置。(2)查看kafka版本命令。(1)进入到指定目录下。原创 2024-05-30 22:57:56 · 465 阅读 · 0 评论 -
kafka学习1 - 线程、进程消息通信方式、JMS模型、Kafka原理图
T1线程发送数据的速率是50/s,T2线程消费的速率是30/s,消费的速率小于生产的速率,就会有大量的数据积压在堆内存或者磁盘文件上,时间长了后,积压的数据就会越来越多,导致影响整个流程的性能。发布-订阅模式是消费者订阅某个主题的消息,主题的消息可以被多个消费者订阅消费。在kafka中,通过偏移量的方式标记每个消息,来确保消息的顺序性。T1线程的数据发送得到堆内存,T2线程就可以共享堆内存的数据。两个不同的线程之间是可以通过堆内存的方式进行数据交互的;进程与进程之间的通信可以通过消息中间件的方式。原创 2024-04-21 15:24:14 · 453 阅读 · 1 评论 -
docker安装kafka和zookeeper
4、测试kafka 进入kafka容器的命令行。如果看到123456 消息发送完成。克隆会话 进入kafka所在目录。2、启动zookeeper容器。在消息发送方输入123456。这里面主要设置了4个参数。3、启动kafka容器。进入kafka所在目录。原创 2023-02-28 21:00:03 · 569 阅读 · 0 评论 -
Linux在docker中安装RabbitMQ
docker run --name 启动后容器的名称 -p 主机端口:容器端口(5672 --client端通信端口,应用访问端口) -p 主机端口:web端容器端口(15672 – 管理界面ui端口,控制台Web端口号) -v 主机文件路径:容器内文件路径 -d(后台运行容器) --restart=always(随着docker重启服务) 镜像名称。NAME: 镜像仓库源的名称NAME: 镜像仓库源的名称。原创 2022-11-25 17:30:26 · 409 阅读 · 0 评论 -
RabbitMQ保证消息可靠性、防止重复消费
场景比如未付款订单,超过一定时间后,系统自动取消订单并释放占有库存。常用解决方案:rabbitmq的消息TTL和死信Exchange结合。消息的TTL(Time To Live)1、消息的TTL就是消息的存活时间。2、RabbitMQ可以对队列和消息分别设置TTL对队列设置就是队列没有消费者连着的保留时间,也可以对每一个单独的消息做单独的设置。超过了这个时间,我们认为这个消息就死了,称之为死信.如果队列设置了,消息也设置了,那么会取小的。所以一个消息如果被路由到不同的队列中,这个消息死亡的原创 2022-05-26 15:10:40 · 3314 阅读 · 1 评论 -
消息中间件 - RabbitMQ详解
一、消息中间件的作用1.异步处理2、应用解耦3、流量控制二、概述1、大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力;2、消息服务中两个重要概念:消息代理(message broker)和目的地(destination)当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。3、消息队列主要有两种形式的目的地* 队列(queue): 消息队列主要有两种形式的目的地* 主题(topic): 发布(publish)/订阅(subscribe)消息原创 2022-05-26 11:45:59 · 1041 阅读 · 0 评论 -
RabbitMQ消息应答与持久化
RabbitMQ消息应答1、执行一个任务可能需要花费几秒钟,你可能会担心如果一个消费者在执行任务过程中挂掉了。基于现在的代码,一旦RabbitMQ将消息分发给了消费者,就会从内存中删除。在这种情况下,如果杀死正在执行任务的消费者,会丢失正在处理的消息,也会丢失已经分发给这个消费者但尚未处理的消息。但是,我们不想丢失任何任务,如果有一个消费者挂掉了,那么我们应该将分发给它的任务交付给另一个消费者去处理。为了确保消息不会丢失,RabbitMQ支持消息应答。消费者发送一个消息应答,告诉RabbitMQ这个消原创 2022-04-07 18:12:01 · 787 阅读 · 1 评论