我们做的程序中一般都会有一些超时机制,来防止一些响应长时间没有反应,对程序造成影响,当然kafka mqtt
同样有这种机制。
kafka:
发布:
max.block.ms
配置控制了KafkaProducer.send()并将KafkaProducer.partitionsFor()被阻塞多长时间。由于缓冲区已满或元数据不可用,这些方法可能会被阻塞止。用户提供的序列化程序或分区程序中的阻塞将不计入此超时。
默认是60s,send是阻塞方法,如果60s还没有发送成功,程序会打印log日志
订阅:
max.poll.interval.ms
意思是相邻两次poll 的最大间隔时间,默认300s,如果超过这个时间,提交offset会失败
mqtt:
发布:
如果mqtt服务不可用,send 直接报错。
订阅:
Keep.alive.interval
心跳时间,如果在心跳时间线程阻塞,服务会断开连接,等下一次请求重新连接
不管kafka mqtt 都有心跳时间设置和超时设置,超时设置要大于心跳时间设置,kafka的心跳线程是单独的,不会因为业务阻塞而不发送心跳消息。mqtt还不知道