博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java logstash 如何保证数据不丢失
阅读量:6006 次
发布时间:2019-06-20

本文共 591 字,大约阅读时间需要 1 分钟。

        用过ruby 版本 的logstash 大家都知道,在input 数据消费进来之后,output数据要是失败了,就会扔掉,这个对数据要求较高的应用中是很难接受的。

       举一个列,input kafka,output elasticsearch,在消费kafka数据到内存队列,在output到elasticsearche的时候,elasticsearch不可用,elasticsearc客户端会重试几次之后还是失败就会扔掉,重新消费kafka数据,ruby 版本的logstash 没有提供配置能保证数据不可丢失。

       java 版本的logstash 在BaseOutput基类里面定义了一个sendFailedMsg 这个方法,这个方法就是有开发插件的开发人员自己写数据重试的逻辑,并且把失败的数据放在 BlockingQueue<Object> failedMsgQueue这个quene 里面,java logstash会在消费input quene 数据之前,先消费failedMsgQueue里面的数据,直到没有数据才会消费input quene里的数据,默认这个是关闭的,需要consistency这个字段设置为true。

   并且,java logstash在应用在正常被kill时会监听input quene 判断里面是否还有数据,如果还有会让里面的数据消费完成,在停掉应用。

    

转载地址:http://ljvmx.baihongyu.com/

你可能感兴趣的文章
新开的博客文章
查看>>
ubuntu 常见错误 Could not get lock /var/lib/dpkg/lock
查看>>
求翻译的文章
查看>>
Java基础学习总结(17)——线程
查看>>
Java学习之Iterator(迭代器)的一般用法 (转)
查看>>
Echache整合Spring缓存实例讲解
查看>>
浅谈程序员的英语学习 - 风口上的猪 - 博客园
查看>>
Oracle监听器启动的两种方法
查看>>
BZOJ1319Sgu261Discrete Roots——BSGS+exgcd+原根与指标+欧拉定理
查看>>
NGINX开启HTTPS最佳实践
查看>>
Nodejs图片验证码captchapng
查看>>
我的友情链接
查看>>
linux命令
查看>>
Linux的五个查找命令:find,locate,whereis,which,type
查看>>
配置Cisco 路由器的静态路由
查看>>
Android WebView保存Cookie登录
查看>>
golang package整理(strings)
查看>>
【源码阅读】dbutil包中的BeanProcessor类
查看>>
函数依赖与模式分解
查看>>
linux中如何改IP
查看>>