tranquilizer实现BeamFactory流式数据写入到Druid


/** *****************************************************************************
  * 版权信息:北京中通天鸿武汉分公司
  *
  * @author xuchang
  *         Copyright: Copyright (c) 2007北京中通天鸿武汉分公司,Inc.All Rights Reserved.
  *         Description:
  * *****************************************************************************/
class SimpleEventBeamFactory extends BeamFactory[EventMap] {
  override def makeBeam: Beam[EventMap] = {
    val curator = CuratorFrameworkFactory.newClient("192.168.165.130:2181,192.168.165.131:2181,192.168.165.133:2181",
      new BoundedExponentialBackoffRetry(100, 3000, 5))
    curator.start()
    val indexService = "druid/overlord"
    val discoveryPath = "/druid/discovery"
    val dataSource = "ctitest-20180911"
    val dimensions = IndexedSeq(
      EventMap.VCC_ID,
      EventMap.AGENT_ID,
      EventMap.QUE_ID,
      EventMap.CALL_ID,
      EventMap.GROUP_ID,
      EventMap.CALL_QUE,
      EventMap.SERVER_NUM,
      EventMap.USER_NUM,
      EventMap.START_TIME,
      EventMap.REASON
    )
    val aggregators = Seq(
      /** 坐席相关Metric **/
      //置闲
      new LongSumAggregatorFactory(READY_NUM, READY_NUM),
      //置忙
      new LongSumAggregatorFactory(NOT_READY_NUM, NOT_READY_NUM),
      // 占线次数
      new LongSumAggregatorFactory(BUSY_NUM, BUSY_NUM),
      //事后处理
      new LongSumAggregatorFactory(ACW_NUM, ACW_NUM),
      new LongSumAggregatorFactory(ACW_NUM_IB, ACW_NUM_IB),
      new LongSumAggregatorFactory(ACW_NUM_OB, ACW_NUM_OB),
      new LongSumAggregatorFactory(ACW_NUM_INTERNAL, ACW_NUM_INTERNAL),
      new LongSumAggregatorFactory(ACW_NUM_UNCONNECTED, ACW_NUM_UNCONNECTED),
      new LongSumAggregatorFactory(ACW_NUM_UNKNOWN, ACW_NUM_UNKNOWN),
      //消息重启
      new LongSumAggregatorFactory(RESTART_NUM, RESTART_NUM),
      // 总登录时长
      new LongSumAggregatorFactory(LOGIN_TIME, LOGIN_TIME),
      //置闲时长
      new LongSumAggregatorFactory(READY_TIME, READY_TIME),
      // 置忙时长
      new LongSumAggregatorFactory(NOT_READY_TIME, NOT_READY_TIME),
      //事后处理总时长
      new LongSumAggregatorFactory(ACW_TIME, ACW_TIME),
      // 呼入事后处理总时长
      new LongSumAggregatorFactory(ACW_TIME_IB, ACW_TIME_IB),
      // 呼出事后处理时长
      new LongSumAggregatorFactory(ACW_TIME_OB, ACW_TIME_OB),
      // 坐席未接通事后处时长
      new LongSumAggregatorFactory(ACW_TIME_UNCONNECTED, ACW_TIME_UNCONNECTED),
      // 内部呼叫事后处理时长
      new LongSumAggregatorFactory(ACW_TIME_INTERNAL, ACW_TIME_INTERNAL),
      //异常情况事后处理时长
      new LongSumAggregatorFactory(ACW_TIME_UNKNOWN, ACW_TIME_UNKNOWN),
      //通话占用时长
      new LongSumAggregatorFactory(BUSY_TIME, BUSY_TIME),
      // 未知坐席状态时长
      new LongSumAggregatorFactory(UNKNOWN_TIME, UNKNOWN_TIME),


      /** 电话消息 **/
      //客户呼入量
      new LongSumAggregatorFactory(CALL_NUM_IB, CALL_NUM_IB),
      // 客户呼入接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_IB, CALL_ANSWERED_NUM_IB),
      // 客户呼入未接通量
      new LongSumAggregatorFactory(CALL_ABANDONED_NUM_IB, CALL_ABANDONED_NUM_IB),
      //客户呼入咨询数
      new LongSumAggregatorFactory(CALL_NUM_CONSULT_IB, CALL_NUM_CONSULT_IB),
      // 客户呼入三方数
      new LongSumAggregatorFactory(CALL_NUM_CONFERENCE_IB, CALL_NUM_CONFERENCE_IB),
      // 客户呼入保持数
      new LongSumAggregatorFactory(CALL_NUM_HOLD_IB, CALL_NUM_HOLD_IB),
      // TODO: 客户呼入振铃时长,留待与时长一起处理
      //  呼入振铃总时长
      new LongSumAggregatorFactory(CALL_TIME_RING_IB, CALL_TIME_RING_IB),
      // 呼入通话时长
      new LongSumAggregatorFactory(CALL_TIME_TALK_IB, CALL_TIME_TALK_IB),
      //  呼入咨询时长
      new LongSumAggregatorFactory(CALL_TIME_CONSULT_IB, CALL_TIME_CONSULT_IB),
      // 呼入三方时长
      new LongSumAggregatorFactory(CALL_TIME_CONFERENCE_IB, CALL_TIME_CONFERENCE_IB),
      //呼入 保持时长
      new LongSumAggregatorFactory(CALL_TIME_HOLD_IB, CALL_TIME_HOLD_IB),


      //ACD 呼入量
      new LongSumAggregatorFactory(CALL_NUM_ACD_IB, CALL_NUM_ACD_IB),
      //ACD 呼入接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_ACD_IB, CALL_ANSWERED_NUM_ACD_IB),
      //ACD呼入咨询量
      new LongSumAggregatorFactory(CALL_NUM_CONSULT_ACD_IB, CALL_NUM_CONSULT_ACD_IB),
      // ACD 呼入三方数
      new LongSumAggregatorFactory(CALL_NUM_CONFERENCE_ACD_IB, CALL_NUM_CONFERENCE_ACD_IB),
      // ACD 呼入保持数
      new LongSumAggregatorFactory(CALL_NUM_HOLD_ACD_IB, CALL_NUM_HOLD_ACD_IB),
      // 转接客户的呼入量
      new LongSumAggregatorFactory(CALL_NUM_TRANSFER_IB, CALL_NUM_TRANSFER_IB),
      //转接客户接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_TRANSFER_IB, CALL_ANSWERED_NUM_TRANSFER_IB),
      // 转接呼入咨询数
      new LongSumAggregatorFactory(CALL_NUM_CONSULT_TRANSFER_IB, CALL_NUM_CONSULT_TRANSFER_IB),
      //  转接呼入三方数
      new LongSumAggregatorFactory(CALL_NUM_CONFERENCE_TRANSFER_IB, CALL_NUM_CONFERENCE_TRANSFER_IB),
      // 转接呼入保持数
      new LongSumAggregatorFactory(CALL_NUM_HOLD_TRANSFER_IB, CALL_NUM_HOLD_TRANSFER_IB),


      // 强拆客户呼入量
      new LongSumAggregatorFactory(CALL_NUM_DISCONNECT_IB, CALL_NUM_DISCONNECT_IB),
      //强拆客户呼入接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_DISCONNECT_IB, CALL_ANSWERED_NUM_DISCONNECT_IB),
      // 强拆呼入咨询数
      new LongSumAggregatorFactory(CALL_NUM_CONSULT_DISCONNECT_IB, CALL_NUM_CONSULT_DISCONNECT_IB),
      // 强拆呼入三方数
      new LongSumAggregatorFactory(CALL_NUM_CONFERENCE_DISCONNECT_IB, CALL_NUM_CONFERENCE_DISCONNECT_IB),
      // 强拆保持量
      new LongSumAggregatorFactory(CALL_NUM_HOLD_DISCONNECT_IB, CALL_NUM_HOLD_DISCONNECT_IB),
      // 转接量
      new LongSumAggregatorFactory(CALL_NUM_MADE_TRANSFER_IB, CALL_NUM_MADE_TRANSFER_IB),
      //强拆量
      new LongSumAggregatorFactory(CALL_NUM_MADE_DISCONNECT_IB, CALL_NUM_MADE_DISCONNECT_IB),
      //  坐席挂机量
      new LongSumAggregatorFactory(HANG_UP_NUM_A, HANG_UP_NUM_A),
      // 客户挂机量
      new LongSumAggregatorFactory(HANG_UP_NUM_C, HANG_UP_NUM_C),

      //呼入被监听数
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_LISTENED_IB, CALL_NUM_MONITOR_LISTENED_IB),
      // 呼入被强插数
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_BARGED_IB, CALL_NUM_MONITOR_BARGED_IB),

      // ACD呼入振铃时长
      new LongSumAggregatorFactory(CALL_TIME_RING_ACD_IB, CALL_TIME_RING_ACD_IB),
      //转接呼入 振铃时长
      new LongSumAggregatorFactory(CALL_TIME_RING_TRANSFER_IB, CALL_TIME_RING_TRANSFER_IB),
      // 强拆呼入振铃时长
      new LongSumAggregatorFactory(CALL_TIME_RING_DISCONNECT_IB, CALL_TIME_RING_DISCONNECT_IB),
      // ACD呼入通话时长
      new LongSumAggregatorFactory(CALL_TIME_TALK_ACD_IB, CALL_TIME_TALK_ACD_IB),
      // 转接呼入 通话时长
      new LongSumAggregatorFactory(CALL_TIME_TALK_TRANSFER_IB, CALL_TIME_TALK_TRANSFER_IB),
      // 强拆呼入通话时长
      new LongSumAggregatorFactory(CALL_TIME_TALK_DISCONNECT_IB, CALL_TIME_TALK_DISCONNECT_IB),
      // 呼入咨询时长
      new LongSumAggregatorFactory(CALL_TIME_CONSULT_ACD_IB, CALL_TIME_CONSULT_ACD_IB),
      // 转接呼入咨询时长
      new LongSumAggregatorFactory(CALL_TIME_CONSULT_TRANSFER_IB, CALL_TIME_CONSULT_TRANSFER_IB),
      //  强拆呼入咨询时长
      new LongSumAggregatorFactory(CALL_TIME_CONSULT_DISCONNECT_IB, CALL_TIME_CONSULT_DISCONNECT_IB),
      // acd 呼入三方时长
      new LongSumAggregatorFactory(CALL_TIME_CONFERENCE_ACD_IB, CALL_TIME_CONFERENCE_ACD_IB),
      // 转接呼入 三方时长
      new LongSumAggregatorFactory(CALL_TIME_CONFERENCE_TRANSFER_IB, CALL_TIME_CONFERENCE_TRANSFER_IB),
      // 强拆呼入 三方时长
      new LongSumAggregatorFactory(CALL_TIME_CONFERENCE_DISCONNECT_IB, CALL_TIME_CONFERENCE_DISCONNECT_IB),
      // acd 保持时长
      new LongSumAggregatorFactory(CALL_TIME_HOLD_ACD_IB, CALL_TIME_HOLD_ACD_IB),
      //  转接呼入保持时长
      new LongSumAggregatorFactory(CALL_TIME_HOLD_TRANSFER_IB, CALL_TIME_CONFERENCE_TRANSFER_IB),
      // 强拆呼入保持时长
      new LongSumAggregatorFactory(CALL_TIME_HOLD_DISCONNECT, CALL_TIME_CONFERENCE_DISCONNECT_IB),


      /** 电话呼出客户 **/
      // 外呼时,系统呼叫坐席的次数
      new LongSumAggregatorFactory(CALL_NUM_SYS_OB, CALL_NUM_SYS_OB)
      ,
      //坐席呼叫客户的呼出量
      new LongSumAggregatorFactory(CALL_NUM_OB, CALL_NUM_OB)
      ,
      // 呼出客户应答量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_OB, CALL_ANSWERED_NUM_OB)
      ,
      //呼出咨询量
      new LongSumAggregatorFactory(CALL_NUM_CONSULT_OB, CALL_NUM_CONSULT_OB)
      ,
      // 呼出三方量
      new LongSumAggregatorFactory(CALL_NUM_CONFERENCE_OB, CALL_NUM_CONFERENCE_OB)
      ,
      //呼出保持量
      new LongSumAggregatorFactory(CALL_NUM_HOLD_OB, CALL_NUM_HOLD_OB)
      ,
      // 呼出 被监听数
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_LISTENED_OB, CALL_NUM_MONITOR_LISTENED_OB)
      ,
      // 呼出 被强拆数
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_BARGED_OB, CALL_NUM_MONITOR_BARGED_OB)
      ,
      // 呼出转移数
      new LongSumAggregatorFactory(CALL_NUM_MADE_TRANSFERRED_OB, CALL_NUM_MADE_TRANSFERRED_OB)
      ,
      // 呼出强拆量
      new LongSumAggregatorFactory(CALL_NUM_MADE_DISCONNECT_OB, CALL_NUM_MADE_DISCONNECT_OB)
      ,
      //  外呼 呼叫时长
      new LongSumAggregatorFactory(CALL_TIME_RING_OB, CALL_TIME_RING_OB),
      // 外呼通话时长
      new LongSumAggregatorFactory(CALL_TIME_TALK_OB, CALL_TIME_TALK_OB),
      //  外呼咨询时长
      new LongSumAggregatorFactory(CALL_TIME_CONSULT_OB, CALL_TIME_CONSULT_OB),
      // 外呼三方时长
      new LongSumAggregatorFactory(CALL_TIME_CONFERENCE_OB, CALL_TIME_CONFERENCE_OB),
      //  外呼保持时长
      new LongSumAggregatorFactory(CALL_TIME_HOLD_OB, CALL_TIME_HOLD_OB),


      /** 内部呼入 **/
      // 坐席被直呼
      new LongSumAggregatorFactory(CALL_NUM_DIRECTED_INTERNAL_IN, CALL_NUM_DIRECTED_INTERNAL_IN)
      ,
      //坐席 被直呼接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_DIRECTED_INTERNAL_IN, CALL_ANSWERED_NUM_DIRECTED_INTERNAL_IN)
      ,

      //坐席被咨询呼入量
      new LongSumAggregatorFactory(CALL_NUM_CONSULTED_INTERNAL_IN, CALL_NUM_CONSULTED_INTERNAL_IN)
      ,
      //坐席被咨询接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_CONSULTED_INTERNAL_IN, CALL_ANSWERED_NUM_CONSULTED_INTERNAL_IN)
      ,

      // 坐席转接呼入量
      new LongSumAggregatorFactory(CALL_NUM_TRANSFER_INTERNAL_IN, CALL_NUM_TRANSFER_INTERNAL_IN)
      ,
      //坐席被转接呼入接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_TRANSFER_INTERNAL_IN, CALL_ANSWERED_NUM_TRANSFER_INTERNAL_IN)
      ,

      //  坐席强拆呼入量
      new LongSumAggregatorFactory(CALL_NUM_DISCONNECT_INTERNAL_IN, CALL_NUM_DISCONNECT_INTERNAL_IN)
      ,
      // 坐席被强拆呼入接通量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_DISCONNECT_INTERNAL_IN, CALL_ANSWERED_NUM_DISCONNECT_INTERNAL_IN)
      ,

      // 内部呼入被转接量
      new LongSumAggregatorFactory(CALL_NUM_MADE_TRANSFER_INTERNAL_IN, CALL_NUM_MADE_TRANSFER_INTERNAL_IN)
      ,
      // 内部呼入被强拆量
      new LongSumAggregatorFactory(CALL_NUM_MADE_DISCONNECT_INTERNAL_IN, CALL_NUM_MADE_DISCONNECT_INTERNAL_IN)
      ,

      //内部呼入 被咨询量
      new LongSumAggregatorFactory(CONSULTED_NUM_INTERNAL_IN, CONSULTED_NUM_INTERNAL_IN)
      ,
      // 内部呼入被三方量
      new LongSumAggregatorFactory(CONFERENCED_NUM_INTERNAL_IN, CONFERENCED_NUM_INTERNAL_IN)
      ,
      //内部呼入 咨询量
      new LongSumAggregatorFactory(CONSULT_NUM_INTERNAL_IN, CONSULT_NUM_INTERNAL_IN)
      ,
      // 内部呼入 三方量
      new LongSumAggregatorFactory(CONFERENCE_NUM_INTERNAL_IN, CONFERENCE_NUM_INTERNAL_IN)
      ,
      // 内部呼入保持数
      new LongSumAggregatorFactory(HOLD_NUM_INTERNAL_IN, HOLD_NUM_INTERNAL_IN)
      ,

      // 内部呼入被监听数
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_LISTENED_INTERNAL_IN, CALL_NUM_MONITOR_LISTENED_INTERNAL_IN)
      ,
      // 内部呼入被强拆数
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_BARGED_INTERNAL_IN, CALL_NUM_MONITOR_BARGED_INTERNAL_IN)
      ,


      /** 内部呼出 **/
      //内部直呼量
      new LongSumAggregatorFactory(CALL_NUM_DIRECT_INTERNAL_OUT, CALL_NUM_DIRECT_INTERNAL_OUT)
      ,
      // 内部直呼应答量
      new LongSumAggregatorFactory(CALL_ANSWERED_NUM_DIRECT_INTERNAL_OUT, CALL_ANSWERED_NUM_DIRECT_INTERNAL_OUT)
      ,
      // 内部呼出 咨询量
      new LongSumAggregatorFactory(CONSULT_NUM_INTERNAL_OUT, CONSULT_NUM_INTERNAL_OUT)
      ,
      // 内部呼出 三方量
      new LongSumAggregatorFactory(CONFERENCE_NUM_INTERNAL_OUT, CONFERENCE_NUM_INTERNAL_OUT)
      ,
      //  内部呼出转接量
      new LongSumAggregatorFactory(CALL_NUM_MADE_TRANSFERRED_INTERNAL_OUT, CALL_NUM_MADE_TRANSFERRED_INTERNAL_OUT)
      ,
      // 内部呼出强拆量
      new LongSumAggregatorFactory(CALL_NUM_MADE_DISCONNECTED_INTERNAL_OUT, CALL_NUM_MADE_DISCONNECTED_INTERNAL_OUT)
      ,
      // 内部呼出监听量
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_LISTENED_INTERNAL_OUT, CALL_NUM_MONITOR_LISTENED_INTERNAL_OUT)
      ,
      // 内部呼出 强插量
      new LongSumAggregatorFactory(CALL_NUM_MONITOR_BARGED_INTERNAL_OUT, CALL_NUM_MONITOR_BARGED_INTERNAL_OUT)

    )
    DruidBeams
      .builder((eventMap: EventMap) => eventMap.timestamp())
      .curator(curator)
      .discoveryPath(discoveryPath)
      .location(DruidLocation.create(indexService, dataSource))
      .rollup(DruidRollup(SpecificDruidDimensions(dimensions), aggregators, QueryGranularity.MINUTE))
      .tuning(
        ClusteredBeamTuning(
          segmentGranularity = com.metamx.common.Granularity.HOUR,
          windowPeriod = new Period("PT10M"),
          partitions = 1,
          replicants = 1
        )
      ).buildBeam()
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值