kafka学习小结(springboot2+kafka组成集群模式3同步异步模式)
接着上一篇补充官网上关于这一块迷迷糊糊的看不懂,自己总结了下其中的差异: 我们一般没做特殊处理的就是同步模式,生产者发送消息,然后交给消费者,这里面我们也可以对消息的结果进行处理,防止消息丢失kafkademo中,修改REST接口如下: ListenableFuture返回对象自带callback方法;我们可以根据成功或者失败进行下一步操作,不过这里主要讲的不是这个...
接着上一篇补充
官网上关于这一块迷迷糊糊的看不懂,自己总结了下其中的差异:
我们一般没做特殊处理的就是同步模式,生产者发送消息,然后交给消费者,这里面我们也可以对消息的结果进行处理,防止消息丢失
kafkademo中,修改REST接口如下:
ListenableFuture返回对象自带callback方法;我们可以根据成功或者失败进行下一步操作,不过这里主要讲的不是这个
在同步消息推送有可能存在的问题,如果你只用一个kafka或者部署在一台机子上时,当网络波动时,就会出现大量的信息丢失情况造成阻塞状态,考虑到这种情况,建议采用异步推送方式
具体实现:
第一步:@EnableAsync//开启异步模式 ,将此注解配置到config里
第二步:方法上加@Async
为了保证我们对于同步的缺陷进一步完善,我们可以进行异常抛出,在配置yml配置如下:
kafka:
bootstrap-servers: 服务地址
producer:
group-id: newgroup
buffer-memory: 40960
buffer-memory控制生产者可用的缓存总量,如果消息发送速度比其传输到服务器的快,将会耗尽这个缓存空间。当缓存空间耗尽,其他发送调用将被阻塞,阻塞时间的阈值通过max.block.ms设定, 之后它将抛出一个TimeoutException
测试下,我们启动demo发送消息,关闭demo1,demo2,模拟异常
发送成功;
开启demo1,demo2,发现:
同步,异步模式下都行,想模拟测试没有好的办法,哎
继续整理发现
kafka发送消息居然还可以指定分区,时间,学习到了。。
至于异步推送的缺陷,暂时还处于学习了解,希望大佬解惑!
更多推荐
所有评论(0)