Kafka学习笔记(7)----Kafka使用Cosumer接收消息 1. 什么是KafkaConsumer? 应用程序使用KafkaConsul'le 「向Kafka 订阅主题,并从订阅的主题上接收消息。Kafka的消息读取不同于从其他消息系统读取数据,它涉及了一些独特的概念和想法。 1.1 消费者和消费者群组 单个的消费者就跟前面的消息系统的消费者一样,创建一个消费者对象,然后订阅一个主题并开始接受消息,然后做自己的业务逻辑,但是Ka...
Kafka学习笔记(5)----Kafka的Consumer 1. Pull vs Push Producer主动的通过push将消息发布到Broker上,Consumer通过Pull的的方式从Broker消息消息。 通过Push的方式由于是一有消息就推到Broker,所以极大的保证了消息实时性,但是在某些情况下,可能由于Consumer网络,或是其他原因倒是消费速度低,此时就可能会导致Consumer堆积大量的消息,甚至在极端情况下会...
Kafka学习笔记(3)----Kafka的数据复制(Replica)与Failover 1. CAP理论 1.1 Cosistency(一致性) 通过某个节点的写操作结果对后面通过其他节点的读操作可见。 如果更新数据后,并发访问的情况下可立即感知该更新,称为强一致性 如果允许之后部分或全部感知不到该更新,称为弱一致性。 若在之后的一段时间(通常该时间不是固定的)后,一定可以感知到该更新,称为最终一致性。 1.2 Availability(...
Kafka学习笔记(4)----Kafka的Leader Election 1. Zookeeper的基本操作 zookeeper中的节点可以持久化/有序的两个维度分为四种类型: PERSIST:持久化无序(保存在磁盘中) PERSIST_SEQUENTIAL:持久化有序递增 EPHEMERAL:非持久化的无序的,保存在内存中,当客户端关闭后消失。 EPHEMERAL_SEQUENTIAL:非持久有序递增,保存在内存中,当客户端关闭...
Kafka学习笔记(1)----Kafka的简介和Linux下单机安装 1. Kafka简介 Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者为Consumer,此外kafka集群有多个kafka实例...
RabbitMQ学习笔记(5)----RabbitMQ整合Spring 在Spring AMQP项目中Spring也提供了对RabbitMQ的支持,这里在之前学习SpringBoot的时候也整合过,但是今天这里使用的Spring的xml配置来整个rabbit.Spring AMQP项目地址:https://spring.io/projects/spring-amqp;下面来看看使用方式。1. 引入依赖pom文件如下:<?xm...
RabbitMQ学习笔记(3)----RabbitMQ Worker的使用 1. Woker队列结构图 这里表示一个生产者生产了消息发送到队列中,但是确有两个消费者在消费同一个队列中的消息。2. 创建一个生产者 Producer如下:package com.wangx.rabbitmq.worker;import com.rabbitmq.client.Channel;import com.rabbitmq.clien...
RabbitMQ学习笔记(1)----RabbitMQ简介与安装 ·1. 什么是RabbitMQ? RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。 而AMQP协议则是指:即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息...
RocketMQ学习笔记(15)----RocketMQ的消息模式 在前面学习ActiveMQ时,看到ActiveMQ可以是队列消息模式,也可以是订阅发布模式。 同样,在RocketMQ中,也存在两种消息模式,即是集群消费模式和广播消费模式。1. 集群消费模式 跟AciiveMQ一样,当存在多个消费者时,消息通过一定负载均衡策略,将消息分发到多个consumer中。 如图: 在RockeMQ中,通过ConsumeGro...
RocketMQ学习笔记(13)----RocketMQ的Consumer消息重试 1. 概念 Producer端重试: 生产者端的消息失败,也就是Producer往MQ上发消息没有发送成功,比如网络抖动导致生产者发送消息到MQ失败。这种消息失败重试我们可以手动设置发送失败重试的次数。 Consumer端重试: Consumer消费消息失败后,要提供一种重试机制,令消息再消费一次,Consumer消费消息失败通常可以认为有以下几种情况 1...
Kafka学习笔记(2)----Kafka的架构 1. 架构图 一个Kafka集群中包含若干个Broker(消息实例),Kafka支持Broker横向扩展,Broker越多,吞吐量越大,同时也包含了若干个Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等)和若干个Consumer(消费者)以及一个zookeeper集群,Kafka通过Zookeeper管理集群配置...
Kafka学习笔记(6)----Kafka使用Producer发送消息 1. Kafka的Producer 不论将kafka作为什么样的用途,都少不了的向Broker发送数据或接受数据,Producer就是用于向Kafka发送数据。如下: 2. 添加依赖 pom.xml文件如下: <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka --> ...
RabbitMQ学习笔记(6)----RabbitMQ 持久化和非持久化 持久化:将交换机或队列数据保存到磁盘,服务器宕机或重启之后依然存在。非持久化:将交换机或队列的数据保存到内存中,服务器宕机或重启之后数据将不存在。在RabbitMQ中也提供了持久化和非持久化方式。实现方式为将durable设置为false即可。在配置文件中配置交换机或队列时配置durable="false"即可,配置方式如下: <!--声明fanout的交换机-...
RocketMQ学习笔记(9)----RocketMQ的Producer 顺序消息 1. 顺序消息原理图2. 什么是顺序消息? 消费消息的顺序要求同发送消息的顺序一致,在RocketMQ中,主要指的是局部顺序,即一类消息为满足顺序性,必须Producer单线程顺序发送,并且发送给到同一队列,这样Consumer就可以按照Producer发送的顺序去消费消息。 2.1 普通顺序消息 正常情况下可以保证完全的顺序消息,但是一旦发生通信异常,Brok...
RabbitMQ学习笔记(4)----RabbitMQ Exchange(交换机)的使用 1.fanout模式1.1 Publish/Subscribe(发布/订阅)结构图 上图表示一个消费者消费消息之后,不讲消息直接存储到队列,而是使用两个消费者各自声明一个队列,将各自的对应的队列与交换机绑定。这样每个消费者都读取的是自身所对应的队列的所有消息,大达到了一个生产者生产消息,所有消费者都能消费的目的。 将交换机类型设置为fanout即可实现Pu...
RocketMQ学习笔记(8)----RocketMQ的Producer API简介 在RocketMQ中提供了三种发送消息的模式: 1.NormalProducer(普通) 2.OrderProducer(顺序) 3.TransactionProducer(事务)下面来介绍一下producer中的各个API的使用: 1. producerGroup:Producer组名, 默认值为DEFAULT_PRODUCER,多个Producer如果属于...
RabbitMQ学习笔记(2)----RabbitMQ简单队列(Hello World)的使用 1. 简单队列结构图 2. 引入依赖 pom.xml文件 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.5.0&...
RocketMQ学习笔记(16)----RocketMQ搭建双主双从(异步复制)集群 1. 修改RocketMQ默认启动端口 由于只有两台机器,部署双主双从需要四个节点,所以只能修改rocketmq的默认启动端口,从官网下载rocketmq的source文件,解压后使用idea打开,全局搜索9876,将所有使用9876端口的地方改为9877。 在终端打开,使用:mvn -Prelease-all -DskipTests clean install命令打包,打包...
RocketMQ学习笔记(6)----RocketMQ的Client的使用 Producer/Consumer 1. 添加依赖 pom.xml如下: <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.3.1<...
RocketMQ学习笔记(14)----RocketMQ的去重策略 1. Exactly Only Once (1). 发送消息阶段,不允许发送重复的消息 (2). 消费消息阶段,不允许消费重复的消息。 只有以上两个条件都满足情况下,才能认为消息是“Exactly Only Once”,而要实现以上两点,在分布式系统环 境下,不可避免要产生巨大的开销。所以RocketMQ 为了追求高性能,并不保证此特性,要求在业务上进行去重,也就...