This is an automated email from the ASF dual-hosted git repository.
gongchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git
The following commit(s) were added to refs/heads/master by this push:
new 97f27b4cb [improve] support multiple receivers. (#1731)
97f27b4cb is described below
commit 97f27b4cbd32b8ad5e255df12b39e06d4004ea73
Author: Logic <[email protected]>
AuthorDate: Sun Apr 14 20:09:32 2024 +0800
[improve] support multiple receivers. (#1731)
---
.../manager/JsonLongListAttributeConverter.java | 32 ++++
.../manager/JsonStringListAttributeConverter.java | 28 ++++
.../manager/JsonTagListAttributeConverter.java | 15 +-
.../common/entity/manager/NoticeRule.java | 8 +-
.../common/entity/message/CollectRep.java | 164 ++++++++++-----------
.../manager/component/alerter/DispatcherAlarm.java | 12 +-
.../controller/NoticeConfigControllerTest.java | 4 +-
.../hertzbeat/manager/dao/NoticeRuleDaoTest.java | 12 +-
.../manager/service/NoticeConfigServiceTest.java | 8 +-
web-app/src/app/pojo/NoticeRule.ts | 4 +-
.../alert/alert-notice/alert-notice.component.html | 1 +
.../alert/alert-notice/alert-notice.component.ts | 27 ++--
12 files changed, 196 insertions(+), 119 deletions(-)
diff --git
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java
new file mode 100644
index 000000000..00abedd95
--- /dev/null
+++
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonLongListAttributeConverter.java
@@ -0,0 +1,32 @@
+package org.apache.hertzbeat.common.entity.manager;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import jakarta.persistence.AttributeConverter;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.hertzbeat.common.util.JsonUtil;
+import java.util.List;
+
+
+/**
+ * json str to id list
+ */
+
+public class JsonLongListAttributeConverter implements
AttributeConverter<List<Long>, String> {
+ @Override
+ public String convertToDatabaseColumn(List<Long> attribute) {
+ return JsonUtil.toJson(attribute);
+
+ }
+
+ @Override
+ public List<Long> convertToEntityAttribute(String dbData) {
+ TypeReference<List<Long>> typeReference = new TypeReference<>() {};
+ List<Long> longList = JsonUtil.fromJson(dbData, typeReference);
+ if (longList == null && !dbData.isEmpty()) {
+ if (StringUtils.isNumeric(dbData)){
+ return List.of(Long.parseLong(dbData));
+ }
+ else throw new NumberFormatException("String convert to Long
error");
+ }else return longList;
+ }
+}
diff --git
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java
new file mode 100644
index 000000000..79a3b1f8b
--- /dev/null
+++
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonStringListAttributeConverter.java
@@ -0,0 +1,28 @@
+package org.apache.hertzbeat.common.entity.manager;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import jakarta.persistence.AttributeConverter;
+import org.apache.hertzbeat.common.util.JsonUtil;
+
+import java.util.List;
+
+
+/**
+ * Convert the list of strings to a JSON string
+ */
+public class JsonStringListAttributeConverter implements
AttributeConverter<List<String>, String> {
+ @Override
+ public String convertToDatabaseColumn(List<String> attribute) {
+ return JsonUtil.toJson(attribute);
+
+ }
+
+ @Override
+ public List<String> convertToEntityAttribute(String dbData) {
+ TypeReference<List<String>> typeReference = new TypeReference<>() {};
+ List<String> stringList = JsonUtil.fromJson(dbData, typeReference);
+ if (stringList == null && !dbData.isEmpty()) {
+ return List.of(dbData);
+ }else return stringList;
+ }
+}
diff --git
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
index aa447f165..791a701df 100644
---
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
+++
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/JsonTagListAttributeConverter.java
@@ -37,18 +37,19 @@ public class JsonTagListAttributeConverter implements
AttributeConverter<List<Ta
@Override
public List<TagItem> convertToEntityAttribute(String dbData) {
- try {
- TypeReference<List<TagItem>> typeReference = new TypeReference<>()
{};
- return JsonUtil.fromJson(dbData, typeReference);
- } catch (Exception e) {
- // history data handler
- TypeReference<Map<String, String>> typeReference = new
TypeReference<>() {};
- Map<String, String> map = JsonUtil.fromJson(dbData, typeReference);
+ TypeReference<List<TagItem>> typeReference = new TypeReference<>() {};
+ List<TagItem> tagItems = JsonUtil.fromJson(dbData, typeReference);
+ if (tagItems == null) {
+ TypeReference<Map<String, String>> mapTypeReference = new
TypeReference<>() {};
+ Map<String, String> map = JsonUtil.fromJson(dbData,
mapTypeReference);
if (map != null) {
return map.entrySet().stream().map(entry -> new
TagItem(entry.getKey(), entry.getValue())).collect(Collectors.toList());
} else {
return null;
}
+ } else {
+ return tagItems;
}
+
}
}
diff --git
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
index 4faf60a98..aa7dba9c2 100644
---
a/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
+++
b/common/src/main/java/org/apache/hertzbeat/common/entity/manager/NoticeRule.java
@@ -69,14 +69,14 @@ public class NoticeRule {
description = "接收人ID",
example = "4324324", accessMode = READ_WRITE)
@NotNull
- private Long receiverId;
+ @Convert(converter = JsonLongListAttributeConverter.class)
+ private List<Long> receiverId;
@Schema(title = "Recipient identification",
description = "接收人标识",
example = "tom", accessMode = READ_WRITE)
- @Length(max = 100)
- @NotNull
- private String receiverName;
+ @Convert(converter = JsonStringListAttributeConverter.class)
+ private List<String> receiverName;
@Schema(title = "Template ID",
description = "模板ID",
diff --git
a/common/src/main/java/org/apache/hertzbeat/common/entity/message/CollectRep.java
b/common/src/main/java/org/apache/hertzbeat/common/entity/message/CollectRep.java
index 1df820071..f15206ad4 100644
---
a/common/src/main/java/org/apache/hertzbeat/common/entity/message/CollectRep.java
+++
b/common/src/main/java/org/apache/hertzbeat/common/entity/message/CollectRep.java
@@ -580,13 +580,13 @@ public final class CollectRep {
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable
.ensureFieldAccessorsInitialized(
MetricsData.class, Builder.class);
}
@@ -1202,13 +1202,13 @@ public final class CollectRep {
MetricsDataOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable
.ensureFieldAccessorsInitialized(
MetricsData.class, Builder.class);
}
@@ -1267,7 +1267,7 @@ public final class CollectRep {
@Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_descriptor;
}
@Override
@@ -2085,7 +2085,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder setFields(
int index, Field.Builder builderForValue) {
@@ -2103,7 +2103,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder addFields(Field value) {
if (fieldsBuilder_ == null) {
@@ -2123,7 +2123,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder addFields(
int index, Field value) {
@@ -2144,7 +2144,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder addFields(
Field.Builder builderForValue) {
@@ -2162,7 +2162,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder addFields(
int index, Field.Builder builderForValue) {
@@ -2180,7 +2180,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder addAllFields(
Iterable<? extends Field> values) {
@@ -2199,7 +2199,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder clearFields() {
if (fieldsBuilder_ == null) {
@@ -2216,7 +2216,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Builder removeFields(int index) {
if (fieldsBuilder_ == null) {
@@ -2233,7 +2233,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Field.Builder getFieldsBuilder(
int index) {
@@ -2244,7 +2244,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public FieldOrBuilder getFieldsOrBuilder(
int index) {
@@ -2258,7 +2258,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public java.util.List<? extends FieldOrBuilder>
getFieldsOrBuilderList() {
@@ -2273,7 +2273,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Field.Builder addFieldsBuilder() {
return getFieldsFieldBuilder().addBuilder(
@@ -2284,7 +2284,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public Field.Builder addFieldsBuilder(
int index) {
@@ -2296,7 +2296,7 @@ public final class CollectRep {
* monitoring collect metric field
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.Field
fields = 9;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.Field
fields = 9;</code>
*/
public java.util.List<Field.Builder>
getFieldsBuilderList() {
@@ -2334,7 +2334,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public java.util.List<ValueRow> getValuesList() {
if (valuesBuilder_ == null) {
@@ -2348,7 +2348,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public int getValuesCount() {
if (valuesBuilder_ == null) {
@@ -2362,7 +2362,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public ValueRow getValues(int index) {
if (valuesBuilder_ == null) {
@@ -2376,7 +2376,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder setValues(
int index, ValueRow value) {
@@ -2397,7 +2397,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder setValues(
int index, ValueRow.Builder builderForValue) {
@@ -2415,7 +2415,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder addValues(ValueRow value) {
if (valuesBuilder_ == null) {
@@ -2435,7 +2435,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder addValues(
int index, ValueRow value) {
@@ -2456,7 +2456,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder addValues(
ValueRow.Builder builderForValue) {
@@ -2474,7 +2474,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder addValues(
int index, ValueRow.Builder builderForValue) {
@@ -2492,7 +2492,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder addAllValues(
Iterable<? extends ValueRow> values) {
@@ -2511,7 +2511,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder clearValues() {
if (valuesBuilder_ == null) {
@@ -2528,7 +2528,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public Builder removeValues(int index) {
if (valuesBuilder_ == null) {
@@ -2545,7 +2545,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public ValueRow.Builder getValuesBuilder(
int index) {
@@ -2556,7 +2556,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public ValueRowOrBuilder getValuesOrBuilder(
int index) {
@@ -2570,7 +2570,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public java.util.List<? extends ValueRowOrBuilder>
getValuesOrBuilderList() {
@@ -2585,7 +2585,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public ValueRow.Builder addValuesBuilder() {
return getValuesFieldBuilder().addBuilder(
@@ -2596,7 +2596,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public ValueRow.Builder addValuesBuilder(
int index) {
@@ -2608,7 +2608,7 @@ public final class CollectRep {
* monitoring collect metric data, mapping with the fields
* </pre>
*
- * <code>repeated .org.dromara.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
+ * <code>repeated .org.apache.hertzbeat.common.entity.message.ValueRow
values = 10;</code>
*/
public java.util.List<ValueRow.Builder>
getValuesBuilderList() {
@@ -2641,10 +2641,10 @@ public final class CollectRep {
}
- //
@@protoc_insertion_point(builder_scope:org.dromara.hertzbeat.common.entity.message.MetricsData)
+ //
@@protoc_insertion_point(builder_scope:org.apache.hertzbeat.common.entity.message.MetricsData)
}
- //
@@protoc_insertion_point(class_scope:org.dromara.hertzbeat.common.entity.message.MetricsData)
+ //
@@protoc_insertion_point(class_scope:org.apache.hertzbeat.common.entity.message.MetricsData)
private static final MetricsData DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new MetricsData();
@@ -2682,7 +2682,7 @@ public final class CollectRep {
}
public interface FieldOrBuilder extends
- //
@@protoc_insertion_point(interface_extends:org.dromara.hertzbeat.common.entity.message.Field)
+ //
@@protoc_insertion_point(interface_extends:org.apache.hertzbeat.common.entity.message.Field)
com.google.protobuf.MessageOrBuilder {
/**
@@ -2746,11 +2746,11 @@ public final class CollectRep {
boolean getLabel();
}
/**
- * Protobuf type {@code org.dromara.hertzbeat.common.entity.message.Field}
+ * Protobuf type {@code org.apache.hertzbeat.common.entity.message.Field}
*/
public static final class Field extends
com.google.protobuf.GeneratedMessageV3 implements
- //
@@protoc_insertion_point(message_implements:org.dromara.hertzbeat.common.entity.message.Field)
+ //
@@protoc_insertion_point(message_implements:org.apache.hertzbeat.common.entity.message.Field)
FieldOrBuilder {
private static final long serialVersionUID = 0L;
// Use Field.newBuilder() to construct.
@@ -2837,13 +2837,13 @@ public final class CollectRep {
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_Field_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_Field_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_Field_fieldAccessorTable
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_Field_fieldAccessorTable
.ensureFieldAccessorsInitialized(
Field.class, Builder.class);
}
@@ -3158,21 +3158,21 @@ public final class CollectRep {
return builder;
}
/**
- * Protobuf type {@code org.dromara.hertzbeat.common.entity.message.Field}
+ * Protobuf type {@code org.apache.hertzbeat.common.entity.message.Field}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
- //
@@protoc_insertion_point(builder_implements:org.dromara.hertzbeat.common.entity.message.Field)
+ //
@@protoc_insertion_point(builder_implements:org.apache.hertzbeat.common.entity.message.Field)
FieldOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_Field_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_Field_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_Field_fieldAccessorTable
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_Field_fieldAccessorTable
.ensureFieldAccessorsInitialized(
Field.class, Builder.class);
}
@@ -3209,7 +3209,7 @@ public final class CollectRep {
@Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_Field_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_Field_descriptor;
}
@Override
@@ -3614,10 +3614,10 @@ public final class CollectRep {
}
- //
@@protoc_insertion_point(builder_scope:org.dromara.hertzbeat.common.entity.message.Field)
+ //
@@protoc_insertion_point(builder_scope:org.apache.hertzbeat.common.entity.message.Field)
}
- //
@@protoc_insertion_point(class_scope:org.dromara.hertzbeat.common.entity.message.Field)
+ //
@@protoc_insertion_point(class_scope:org.apache.hertzbeat.common.entity.message.Field)
private static final Field DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new Field();
@@ -3655,7 +3655,7 @@ public final class CollectRep {
}
public interface ValueRowOrBuilder extends
- //
@@protoc_insertion_point(interface_extends:org.dromara.hertzbeat.common.entity.message.ValueRow)
+ //
@@protoc_insertion_point(interface_extends:org.apache.hertzbeat.common.entity.message.ValueRow)
com.google.protobuf.MessageOrBuilder {
/**
@@ -3700,11 +3700,11 @@ public final class CollectRep {
getColumnsBytes(int index);
}
/**
- * Protobuf type {@code org.dromara.hertzbeat.common.entity.message.ValueRow}
+ * Protobuf type {@code org.apache.hertzbeat.common.entity.message.ValueRow}
*/
public static final class ValueRow extends
com.google.protobuf.GeneratedMessageV3 implements
- //
@@protoc_insertion_point(message_implements:org.dromara.hertzbeat.common.entity.message.ValueRow)
+ //
@@protoc_insertion_point(message_implements:org.apache.hertzbeat.common.entity.message.ValueRow)
ValueRowOrBuilder {
private static final long serialVersionUID = 0L;
// Use ValueRow.newBuilder() to construct.
@@ -3781,13 +3781,13 @@ public final class CollectRep {
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable
.ensureFieldAccessorsInitialized(
ValueRow.class, Builder.class);
}
@@ -4005,21 +4005,21 @@ public final class CollectRep {
return builder;
}
/**
- * Protobuf type {@code
org.dromara.hertzbeat.common.entity.message.ValueRow}
+ * Protobuf type {@code
org.apache.hertzbeat.common.entity.message.ValueRow}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
- //
@@protoc_insertion_point(builder_implements:org.dromara.hertzbeat.common.entity.message.ValueRow)
+ //
@@protoc_insertion_point(builder_implements:org.apache.hertzbeat.common.entity.message.ValueRow)
ValueRowOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable
.ensureFieldAccessorsInitialized(
ValueRow.class, Builder.class);
}
@@ -4050,7 +4050,7 @@ public final class CollectRep {
@Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
- return
CollectRep.internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_descriptor;
+ return
CollectRep.internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_descriptor;
}
@Override
@@ -4322,10 +4322,10 @@ public final class CollectRep {
}
- //
@@protoc_insertion_point(builder_scope:org.dromara.hertzbeat.common.entity.message.ValueRow)
+ //
@@protoc_insertion_point(builder_scope:org.apache.hertzbeat.common.entity.message.ValueRow)
}
- //
@@protoc_insertion_point(class_scope:org.dromara.hertzbeat.common.entity.message.ValueRow)
+ //
@@protoc_insertion_point(class_scope:org.apache.hertzbeat.common.entity.message.ValueRow)
private static final ValueRow DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new ValueRow();
@@ -4363,20 +4363,20 @@ public final class CollectRep {
}
private static final com.google.protobuf.Descriptors.Descriptor
-
internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_descriptor;
+
internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_descriptor;
private static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-
internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable;
+
internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable;
private static final com.google.protobuf.Descriptors.Descriptor
-
internal_static_org_dromara_hertzbeat_common_entity_message_Field_descriptor;
+
internal_static_org_apache_hertzbeat_common_entity_message_Field_descriptor;
private static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-
internal_static_org_dromara_hertzbeat_common_entity_message_Field_fieldAccessorTable;
+
internal_static_org_apache_hertzbeat_common_entity_message_Field_fieldAccessorTable;
private static final com.google.protobuf.Descriptors.Descriptor
-
internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_descriptor;
+
internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_descriptor;
private static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-
internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable;
+
internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
@@ -4386,15 +4386,15 @@ public final class CollectRep {
descriptor;
static {
String[] descriptorData = {
- "\n\021collect_rep.proto\022+org.dromara.hertzbe" +
+ "\n\021collect_rep.proto\022+org.apache.hertzbe" +
"at.common.entity.message\"\302\002\n\013MetricsData" +
"\022\n\n\002id\030\001 \001(\004\022\020\n\010tenantId\030\002
\001(\004\022\013\n\003app\030\003 " +
"\001(\t\022\017\n\007metrics\030\004
\001(\t\022\020\n\010priority\030\005 \001(\r\022\014" +
- "\n\004time\030\006 \001(\004\022?\n\004code\030\007
\001(\01621.org.dromara" +
+ "\n\004time\030\006 \001(\004\022?\n\004code\030\007
\001(\01621.org.apache" +
".hertzbeat.common.entity.message.Code\022\013\n" +
- "\003msg\030\010 \001(\t\022B\n\006fields\030\t \003(\01322.org.dromara"
+
+ "\003msg\030\010 \001(\t\022B\n\006fields\030\t \003(\01322.org.apache" +
".hertzbeat.common.entity.message.Field\022E" +
- "\n\006values\030\n \003(\01325.org.dromara.hertzbeat.c" +
+ "\n\006values\030\n \003(\01325.org.apache.hertzbeat.c" +
"ommon.entity.message.ValueRow\"@\n\005Field\022\014" +
"\n\004name\030\001 \001(\t\022\014\n\004type\030\002
\001(\r\022\014\n\004unit\030\003 \001(\t" +
"\022\r\n\005label\030\004
\001(\010\"\033\n\010ValueRow\022\017\n\007columns\030\001" +
@@ -4406,23 +4406,23 @@ public final class CollectRep {
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
});
-
internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_descriptor
=
+
internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_descriptor
=
getDescriptor().getMessageTypes().get(0);
-
internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable
= new
+
internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_fieldAccessorTable
= new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-
internal_static_org_dromara_hertzbeat_common_entity_message_MetricsData_descriptor,
+
internal_static_org_apache_hertzbeat_common_entity_message_MetricsData_descriptor,
new String[] { "Id", "TenantId", "App", "Metrics", "Priority", "Time",
"Code", "Msg", "Fields", "Values", });
-
internal_static_org_dromara_hertzbeat_common_entity_message_Field_descriptor =
+
internal_static_org_apache_hertzbeat_common_entity_message_Field_descriptor =
getDescriptor().getMessageTypes().get(1);
-
internal_static_org_dromara_hertzbeat_common_entity_message_Field_fieldAccessorTable
= new
+
internal_static_org_apache_hertzbeat_common_entity_message_Field_fieldAccessorTable
= new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-
internal_static_org_dromara_hertzbeat_common_entity_message_Field_descriptor,
+
internal_static_org_apache_hertzbeat_common_entity_message_Field_descriptor,
new String[] { "Name", "Type", "Unit", "Label", });
-
internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_descriptor
=
+
internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_descriptor =
getDescriptor().getMessageTypes().get(2);
-
internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable
= new
+
internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_fieldAccessorTable
= new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-
internal_static_org_dromara_hertzbeat_common_entity_message_ValueRow_descriptor,
+
internal_static_org_apache_hertzbeat_common_entity_message_ValueRow_descriptor,
new String[] { "Columns", });
}
diff --git
a/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/DispatcherAlarm.java
b/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/DispatcherAlarm.java
index 76b9a92c5..801d51920 100644
---
a/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/DispatcherAlarm.java
+++
b/manager/src/main/java/org/apache/hertzbeat/manager/component/alerter/DispatcherAlarm.java
@@ -132,11 +132,17 @@ public class DispatcherAlarm implements InitializingBean {
for (NoticeRule rule : noticeRules) {
try {
if (rule.getTemplateId() == null) {
-
sendNoticeMsg(getOneReceiverById(rule.getReceiverId()),
- null, alert);
+ List<Long> receiverIdList = rule.getReceiverId();
+ for (Long receiverId : receiverIdList) {
+ sendNoticeMsg(getOneReceiverById(receiverId),
+ null, alert);
+ }
} else {
-
sendNoticeMsg(getOneReceiverById(rule.getReceiverId()),
+ List<Long> receiverIdList = rule.getReceiverId();
+ for (Long receiverId : receiverIdList) {
+ sendNoticeMsg(getOneReceiverById(receiverId),
getOneTemplateById(rule.getTemplateId()),
alert);
+ }
}
} catch (AlertNoticeException e) {
log.warn("DispatchTask sendNoticeMsg error, message:
{}", e.getMessage());
diff --git
a/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
b/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
index 98c02039f..b679a0a9b 100644
---
a/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
+++
b/manager/src/test/java/org/apache/hertzbeat/manager/controller/NoticeConfigControllerTest.java
@@ -67,8 +67,8 @@ class NoticeConfigControllerTest {
NoticeRule noticeRule = new NoticeRule();
noticeRule.setId(87584674384L);
noticeRule.setName("dispatch-1");
- noticeRule.setReceiverId(4324324L);
- noticeRule.setReceiverName("tom");
+ noticeRule.setReceiverId(List.of(4324324L));
+ noticeRule.setReceiverName(List.of("tom"));
noticeRule.setTemplateId(4324324L);
noticeRule.setTemplateName("test");
noticeRule.setCreator("tom");
diff --git
a/manager/src/test/java/org/apache/hertzbeat/manager/dao/NoticeRuleDaoTest.java
b/manager/src/test/java/org/apache/hertzbeat/manager/dao/NoticeRuleDaoTest.java
index a7dd46615..51361fd1d 100644
---
a/manager/src/test/java/org/apache/hertzbeat/manager/dao/NoticeRuleDaoTest.java
+++
b/manager/src/test/java/org/apache/hertzbeat/manager/dao/NoticeRuleDaoTest.java
@@ -53,10 +53,10 @@ class NoticeRuleDaoTest extends
AbstractSpringIntegrationTest {
.modifier("mock")
.creator("mock")
.priorities(Collections.emptyList())
- .receiverId(1L)
- .receiverName("mock receiver")
+ .receiverId(List.of(1L))
+ .receiverName(List.of("mock receiver"))
.templateId(1L)
- .receiverName("mock template")
+ .receiverName(List.of("mock template"))
.tags(Collections.emptyList())
.build();
enabled = noticeRuleDao.saveAndFlush(enabled);
@@ -73,10 +73,10 @@ class NoticeRuleDaoTest extends
AbstractSpringIntegrationTest {
.modifier("mock")
.creator("mock")
.priorities(Collections.emptyList())
- .receiverId(1L)
- .receiverName("mock receiver")
+ .receiverId(List.of(1L))
+ .receiverName(List.of("mock receiver"))
.templateId(1L)
- .receiverName("mock template")
+ .receiverName(List.of("mock template"))
.tags(Collections.emptyList())
.build();
disabled = noticeRuleDao.saveAndFlush(disabled);
diff --git
a/manager/src/test/java/org/apache/hertzbeat/manager/service/NoticeConfigServiceTest.java
b/manager/src/test/java/org/apache/hertzbeat/manager/service/NoticeConfigServiceTest.java
index 040262773..eabc261d1 100644
---
a/manager/src/test/java/org/apache/hertzbeat/manager/service/NoticeConfigServiceTest.java
+++
b/manager/src/test/java/org/apache/hertzbeat/manager/service/NoticeConfigServiceTest.java
@@ -168,27 +168,27 @@ class NoticeConfigServiceTest {
.id(1L)
.filterAll(true)
.priorities(priorities)
- .receiverId(1L)
+ .receiverId(List.of(1L))
.build();
final NoticeRule rule2 = NoticeRule.builder()
.id(2L)
.filterAll(false)
.priorities(prioritiesFail)
- .receiverId(2L)
+ .receiverId(List.of(2L))
.build();
final NoticeRule rule3 = NoticeRule.builder()
.id(3L)
.filterAll(false)
.priorities(priorities)
.tags(tagsFail)
- .receiverId(3L)
+ .receiverId(List.of(3L))
.build();
final NoticeRule rule4 = NoticeRule.builder()
.id(4L)
.filterAll(false)
.priorities(priorities)
.tags(tags)
- .receiverId(4L)
+ .receiverId(List.of(4L))
.build();
final List<NoticeRule> rules = Lists.newArrayList(rule1, rule2, rule3,
rule4);
diff --git a/web-app/src/app/pojo/NoticeRule.ts
b/web-app/src/app/pojo/NoticeRule.ts
index 4c454d0d5..94d82fd3a 100644
--- a/web-app/src/app/pojo/NoticeRule.ts
+++ b/web-app/src/app/pojo/NoticeRule.ts
@@ -20,8 +20,8 @@
export class NoticeRule {
id!: number;
name!: string;
- receiverId!: number;
- receiverName!: string;
+ receiverId!: number[];
+ receiverName!: string[];
templateId!: number | null;
templateName!: string | null;
enable: boolean = true;
diff --git
a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
index fe60d65f5..023b329ac 100644
--- a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
+++ b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.html
@@ -390,6 +390,7 @@
[(ngModel)]="rule.receiverId"
(ngModelChange)="onSwitchReceiver()"
[nzOptions]="receiversOption"
+ nzMode="multiple"
id="receiver"
name="receiver"
nzPlaceHolder="Select a receiver"
diff --git
a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.ts
b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.ts
index 65ea70e39..6712e01b2 100644
--- a/web-app/src/app/routes/alert/alert-notice/alert-notice.component.ts
+++ b/web-app/src/app/routes/alert/alert-notice/alert-notice.component.ts
@@ -439,10 +439,14 @@ export class AlertNoticeComponent implements OnInit {
this.isManageRuleModalVisible = true;
this.isManageRuleModalAdd = false;
this.receiversOption = [];
- this.receiversOption.push({
- value: rule.receiverId,
- label: rule.receiverName
+
+ this.rule.receiverId.forEach(id => {
+ this.receiversOption.push({
+ value: id,
+ label: this.rule.receiverName[this.rule.receiverId.indexOf(id)]
+ });
});
+
this.templatesOption = [];
if (this.rule.templateId && this.rule.templateName) {
this.templatesOption.push({
@@ -492,9 +496,11 @@ export class AlertNoticeComponent implements OnInit {
onSwitchReceiver() {
this.receiversOption.forEach(option => {
- if (option.value == this.rule.receiverId) {
- this.switchReceiver = option.receiver;
- }
+ this.rule.receiverId.forEach(id => {
+ if (option.value == id) {
+ this.switchReceiver = option.receiver;
+ }
+ });
});
this.rule.templateId = -1;
}
@@ -685,10 +691,13 @@ export class AlertNoticeComponent implements OnInit {
}
onManageRuleModalOk() {
+ this.rule.receiverName = [];
this.receiversOption.forEach(option => {
- if (option.value == this.rule.receiverId) {
- this.rule.receiverName = option.label;
- }
+ this.rule.receiverId.forEach(id => {
+ if (option.value == id) {
+ this.rule.receiverName.push(option.label);
+ }
+ });
});
// template model
if (this.rule.templateId != null && this.rule.templateId >= 0) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]