class AlarmCommonReduce {

    private final AlarmSilenceReduce alarmSilenceReduce;
	
    private final AlarmConvergeReduce alarmConvergeReduce;

    private final CommonDataQueue dataQueue;

    private final AlertMonitorDao alertMonitorDao;

    public void reduceAndSendAlarm(Alert alert) {<FILL_FUNCTION_BODY>}

}

        alert.setTimes(1);
        Map<String, String> tags = alert.getTags();
        if (tags == null) {
            tags = new HashMap<>(8);
            alert.setTags(tags);
        }
        String monitorIdStr = tags.get(CommonConstants.TAG_MONITOR_ID);
        if (monitorIdStr == null) {
            log.debug("receiver extern alarm message: {}", alert);
        } else {
            long monitorId = Long.parseLong(monitorIdStr);
            List<Tag> tagList = alertMonitorDao.findMonitorIdBindTags(monitorId);
            for (Tag tag : tagList) {
                if (!tags.containsKey(tag.getName())) {
                    tags.put(tag.getName(), tag.getValue());
                }
            }
        }
        // converge -> silence
        if (alarmConvergeReduce.filterConverge(alert) && alarmSilenceReduce.filterSilence(alert)) {
            dataQueue.sendAlertsData(alert);
        }
    
<no_super_class>