从零开始搭建flink流式计算项目-2小试牛刀-物联网场景下,如何实现设备采集参数监控报警功能

本文介绍了如何使用ApacheFlink进行实时流处理,监控物联网设备的数据,当采集值超出预设的阈值时触发报警事件。通过Java实现的IotMonitorJob展示了如何结合规则配置和数据流处理来生成报警消息。
摘要由CSDN通过智能技术生成

*/
private Double min;

/\*\*

* 最大值
*/
private Double max;

}


##### 报警事件



/**
* 报警消息
*/
@Data
public class AlarmMessage {

/\*\*

* 设备
*/
private Integer deviceId;

/\*\*

* 报警时间
*/
private Long timestamp;
/**
* 触发报警的采集变量名称
*/
private String alarmVar;

/\*\*

* 触发报警的采集值
*/
private Number alarmValue;
}


#### 开始实现



public class IotMonitorJob {

public static void main(String[] args) throws Exception {


    StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();
    environment.setParallelism(1);

    // 采集数据Stream
    DataStreamSource<IotData> iotDataStream = getIotStream(environment);
    // 报警规则Stream
    DataStreamSource<AlarmRule> ruleConfig = getRuleConfig(environment);
    // 缓存报警规则 并监控报警数据
    SingleOutputStreamOperator<AlarmMessage> alarmStream = iotDataStream.connect(ruleConfig)
            .keyBy(IotData::getDeviceId, AlarmRule::getDeviceId)
            .process(new CoProcessFunction<IotData, AlarmRule, AlarmMessage>() {

                // 用临时保存设备的报警规则 ,这里的状态交由flink维护
                private MapState<Integer, AlarmRule> alarmRuleValueState;

                @Override
                public void open(Configuration parameters) throws Exception {
                    super.open(parameters);
                    // 初始化 ValueState
                    alarmRuleValueState = getRuntimeContext().getMapState(new MapStateDescriptor<>(
  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值