kafka学习 -- 消息处理
来源:互联网 发布:樱井知香 2016番号 编辑:程序博客网 时间:2024/06/05 06:00
1但是这里的sendRequest只是将它放到一个队列中,而不是通过TCP发送给其它线程处理而这个队列里面的消息会由KafkaRequestHandler进行处理,到这里,就可以看到了handle的处理方式了
Kafka在启动的时候,会启动Processor线程负责监听消息端口,当有消息接收时,调用read函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def
read(key
:
SelectionKey) {
... ...
if
(read <
0
) {
... ...
}
else
if
(receive.complete) {
val
req
=
RequestChannel.Request(processor
=
id, requestKey
=
key, buffer
=
receive.buffer, startTimeMs
=
time.milliseconds, remoteAddress
=
address)
//当消息接收完成后,调用sendRequest
requestChannel.sendRequest(req)
key.attach(
null
)
// explicitly reset interest ops to not READ, no need to wake up the selector just yet
key.interestOps(key.interestOps & (~SelectionKey.OP
_
READ))
}
else
{
... ...
wakeup()
}
}
1
2
3
def
sendRequest(request
:
RequestChannel.Request) {
requestQueue.put(request)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def
run() {
while
(
true
) {
try
{
... ...
//这里的receiveRequest()就是负责从前面的requestQueue队列中获取消息
req
=
requestChannel.receiveRequest(
300
)
... ...
//消息获取之后,就是处理消息了
apis.handle(req)
}
catch
{
case
e
:
Throwable
=
> error(
"Exception when handling request"
, e)
}
}
}
1
2
3
4
5
6
7
8
9
10
11
def
handle(request
:
RequestChannel.Request) {
... .,,
//从这里可以年到它会根据不同的requestId来选择不同的handle来处理,而这个requestId,它是从ByteBuffer中
//调用getShort()获取的第一个参数。查看producer生成Bytebuffer的定义,可以看到,写入的第一个参数就是
//requestId,因此前后就可以连接起来
request.requestId
match
{
case
RequestKeys.ProduceKey
=
> handleProducerOrOffsetCommitRequest(request)
.. ...
}
0 0
- kafka学习 -- 消息处理
- Golang 处理Kafka消息
- kafka处理超大消息
- 分布式消息处理中间件-Kafka学习笔…
- 消息队列-Kafka学习
- 消息队列 Kafka学习
- 分布式消息处理Kafka入门
- Kafka学习笔记 --- Kafka消息机制
- Kafka消息中间件学习笔记
- Kafka消息系统学习摘要
- kafka无法发送消息问题处理
- kafka处理超大消息的方案
- Kafka消息处理与集群维护
- kafka无法发送消息问题处理
- Kafka简介及使用PHP处理Kafka消息
- 消息队列kafka的学习与使用
- kafka中处理超大消息的一些处理
- 消息处理学习
- 欢迎使用CSDN-markdown编辑器
- __init__.py 包文件
- termcap - 终端功能数据库详解
- iOS沙盒目录结构解析
- hibernate映射数据库提示not maped
- kafka学习 -- 消息处理
- ginx+php-fpm实现原理及问题记录
- 写在2015的尾巴上
- php的array object 互转
- js判断上传文件大小
- iOS发短信
- jQuery.data() 函数详解
- 聚类图像像素 Clustering Pixels Using K-Means
- 中文编码--深入分析 Java 中的中文编码问题