/** *****************************************************************************
* 版权信息:北京中通天鸿武汉分公司
*
* @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()
}
}
tranquilizer实现BeamFactory流式数据写入到Druid
最新推荐文章于 2021-09-18 10:03:56 发布