关于flume配置加载(二)

为什么翻flume的代码,一方面是确实遇到了问题,另一方面是想翻一下flume的源码,看看有什么收获,现在收获还谈不上,因为要继续总结。不够已经够解决问题了,而且确实有好的代码,后续会继续慢慢分享,这里先把启动的流程分析一下,这也是找到问题症结的关键。

至于遇到的问题如下:

Caused by: org.apache.flume.ChannelException: Put queue for MemoryTransaction of capacity 100 full, consider committing more frequently, increasing capacity or increasing thread count
at org.apache.flume.channel.MemoryChannel$MemoryTransaction.doPut(MemoryChannel.java:84)
at org.apache.flume.channel.BasicTransactionSemantics.put(BasicTransactionSemantics.java:93)
at org.apache.flume.channel.BasicChannelSemantics.put(BasicChannelSemantics.java:80)
at org.apache.flume.channel.ChannelProcessor.processEventBatch(ChannelProcessor.java:189)

从异常上大致可以看出是,MemoryTransaction的容量满了,可是容量满了?然后呢。。我们开始根据代码分析。

上一篇文章中http://www.cnblogs.com/aquariusm/p/6118976.html我们分析了flume配置加载的基础流程核心就是:flumeConfiguration.getConfiguration()方法。根据第一篇文章中的流程图,我们可以看到,加载好配置文件后,就开始启动各个组件了,即Application的如下代码:

  @Subscribe
  public synchronized void handleConfigurationEvent(MaterializedConfiguration conf) {
    stopAllComponents();
    startAllComponents(conf);
  }

在startAllComponents(conf)中,无非就是开始

时间: 2024-12-23 13:56:57

关于flume配置加载(二)的相关文章

Unity3d热更新全书-加载(二)如何在不用AssetBundle的前提下动态加载预设

Unity3D的主要构成大家都知道,首先是场景图,场景图上的节点构成一颗树. 每个节点对应一个GameObject对象 然后每个GameObject有若干个组件 有一些组件会与资源产生关系,比如MeshRenderer会关联材质,材质会关联shader和贴图 场景图的一部分可以被保存为一个预设,prefab. 有时候我们会需要用预设去复用,而预设的加载似乎只能通过AB去打包,其实不然,这里我们有一个开源的库就可以解决这个问题. 为什么不使用AB,可以见上一篇,加载(一),不使用AB一份资源全平台

Unity3d通用工具类之数据配置加载类

今天,我们来讲讲游戏中的数据配置加载. 什么是游戏数据加载呢?一般来说游戏中会有场景地图. 按照国际惯例,先贴一张游戏场景的地图: 在这张地图上,我们可以看到有很多正六边形,正六边形上有树木.岩石等. 哎!那么问题也就来了.大家会思考这张地图怎么啦.关游戏数据配置有什么关系?我们做好场景直接loding进来不就行了? 这也就是问题所在,如果你是直接loding进场景有很多问题: 1.场景是死的.只能是这个做好的场景.如果你想删除一些正六边形,想改变一些树木的位置,如何完成.有人会想,那我再做一个

Spring Boot 配置加载顺序详解

使用 Spring Boot 会涉及到各种各样的配置,如开发.测试.线上就至少 3 套配置信息了.Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发.测试.线上环境使用不同的配置. 在 Spring Boot 里面,可以使用以下几种方式来加载配置.本章内容基于 Spring Boot 2.0 进行详解. 1.properties文件: 2.YAML文件: 3.系统环境变量: 4.命令行参数: 等等-- 我们可以在 Spring Beans 里面直接使用这些配置文件中加载的值,如:

3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)

1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置  1.命令行参数 所有的配置都可以在命令行上进行指定 先打包在进行测试 java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc 指定访问的路径 多个配置用空格分开: --配置项=值 -- 由jar包外向jar包

Flask程序相关配置加载的三种方式

方式一:从对象中加载配置 1.定义配置类,在配置类中添加相应的配置 2.通过app.config.from_object(配置类)进行加载 代码如下: from flask import Flask app=Flask(__name__) # =======从对象中加载配置========= class Config(object): DEBUG=True app.config.from_object(Config) @app.route("/") def index(): retur

spring配置加载多个properties文件

(一)首先,我们要先在spring配置文件中.定义一个专门读取properties文件的类.例: 1 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 2 <property name="locations"> 3 <list> 4 <v

整合多个maven工程时Spring配置加载JDBC问题

问题叙述: 两个工程都通过JDBC访问mysql数据库,各自运行OK, 但合并成一个maven工程后,发现前一个工程访问数据库异常,貌似拿不到自己的DAO. 解决办法: 发现这两个工程的xml配置中,有个共同的bean, bean id 为 sqlMapClient,因为spring是把所有配置文件都一起加载的,所以后面的sqlMapClient,替换掉了前面的 sqlMapClient,又由于前后两个工程访问的mysql的库和表都不同,导致前面工程的jdbc访问不到mysql库,故报错.解决办

thinkphp 配置加载

状态配置 每个应用都可以在不同的情况下设置自己的状态(或者称之为应用场景),并且加载不同的配置文件. 举个例子,你需要在公司和家里分别设置不同的数据库测试环境.那么可以这样处理,在公司环境中,我们在入口文件中定义: define('APP_STATUS','office'); 那么就会自动加载该状态对应的配置文件(位于Application/Common/Conf/office.php). 如果我们回家后,我们修改定义为: define('APP_STATUS','home'); 那么就会自动加

SoftReference+Thread进行图片加载(二)

main.xml(先看主页面布局,界面很简单,只有一个ListView) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="