Browse Source

Used Java serialization for NotificationRuleTrigger

pull/9851/head
YevhenBondarenko 2 years ago
parent
commit
720afebeeb
  1. 3
      application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java
  2. 1
      common/proto/src/main/proto/queue.proto
  3. 4
      common/queue/src/main/java/org/thingsboard/server/queue/notification/RemoteNotificationRuleProcessor.java
  4. 15
      dao/src/test/java/org/thingsboard/server/dao/service/TenantProfileServiceTest.java

3
application/src/main/java/org/thingsboard/server/service/queue/DefaultTbCoreConsumerService.java

@ -28,6 +28,7 @@ import org.thingsboard.common.util.DonAsynchron;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.common.util.ThingsBoardThreadFactory;
import org.thingsboard.server.actors.ActorSystemContext;
import org.thingsboard.server.common.data.JavaSerDesUtil;
import org.thingsboard.server.common.data.alarm.AlarmInfo;
import org.thingsboard.server.common.data.event.ErrorEvent;
import org.thingsboard.server.common.data.event.Event;
@ -383,7 +384,7 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
forwardToSubMgrService(toCoreNotification.getToSubscriptionMgrMsg(), callback);
} else if (toCoreNotification.hasNotificationRuleProcessorMsg()) {
NotificationRuleTrigger notificationRuleTrigger =
JacksonUtil.fromBytes(toCoreNotification.getNotificationRuleProcessorMsg().getTrigger().toByteArray(), NotificationRuleTrigger.class);
JavaSerDesUtil.decode(toCoreNotification.getNotificationRuleProcessorMsg().getTrigger().toByteArray());
notificationRuleProcessor.process(notificationRuleTrigger);
callback.onSuccess();
} else if (toCoreNotification.hasResourceCacheInvalidateMsg()) {

1
common/proto/src/main/proto/queue.proto

@ -1506,7 +1506,6 @@ message NotificationSchedulerServiceMsg {
}
message NotificationRuleProcessorMsg {
//Json
bytes trigger = 1;
}

4
common/queue/src/main/java/org/thingsboard/server/queue/notification/RemoteNotificationRuleProcessor.java

@ -20,7 +20,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.stereotype.Service;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.JavaSerDesUtil;
import org.thingsboard.server.common.data.notification.rule.trigger.NotificationRuleTrigger;
import org.thingsboard.server.common.msg.notification.NotificationRuleProcessor;
import org.thingsboard.server.common.msg.queue.ServiceType;
@ -53,7 +53,7 @@ public class RemoteNotificationRuleProcessor implements NotificationRuleProcesso
log.debug("Submitting notification rule trigger: {}", trigger);
TransportProtos.NotificationRuleProcessorMsg.Builder msg = TransportProtos.NotificationRuleProcessorMsg.newBuilder()
.setTrigger(ByteString.copyFrom(JacksonUtil.writeValueAsBytes(trigger)));
.setTrigger(ByteString.copyFrom(JavaSerDesUtil.encode(trigger)));
partitionService.getAllServiceIds(ServiceType.TB_CORE).stream().findAny().ifPresent(serviceId -> {
TopicPartitionInfo tpi = topicService.getNotificationsTopic(ServiceType.TB_CORE, serviceId);

15
dao/src/test/java/org/thingsboard/server/dao/service/TenantProfileServiceTest.java

@ -24,7 +24,6 @@ import org.junit.jupiter.api.Assertions;
import org.springframework.beans.factory.annotation.Autowired;
import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.EntityInfo;
import org.thingsboard.server.common.data.JavaSerDesUtil;
import org.thingsboard.server.common.data.Tenant;
import org.thingsboard.server.common.data.TenantProfile;
import org.thingsboard.server.common.data.id.TenantId;
@ -38,12 +37,15 @@ import org.thingsboard.server.common.data.queue.SubmitStrategyType;
import org.thingsboard.server.common.data.tenant.profile.DefaultTenantProfileConfiguration;
import org.thingsboard.server.common.data.tenant.profile.TenantProfileData;
import org.thingsboard.server.common.data.tenant.profile.TenantProfileQueueConfiguration;
import org.thingsboard.server.common.util.ProtoUtils;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.tenant.TenantProfileService;
import org.thingsboard.server.gen.transport.TransportProtos;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
@ -300,19 +302,18 @@ public class TenantProfileServiceTest extends AbstractServiceTest {
}
@Test
public void testTenantProfileSerialization_fst() {
public void testTenantProfileSerialization_proto() {
TenantProfile tenantProfile = new TenantProfile();
tenantProfile.setId(new TenantProfileId(UUID.randomUUID()));
tenantProfile.setName("testProfile");
TenantProfileData profileData = new TenantProfileData();
tenantProfile.setProfileData(profileData);
profileData.setConfiguration(new DefaultTenantProfileConfiguration());
addMainQueueConfig(tenantProfile);
byte[] serialized = assertDoesNotThrow(() -> JavaSerDesUtil.encode(tenantProfile));
assertDoesNotThrow(() -> {
JavaSerDesUtil.encode(profileData);
});
byte[] serialized = assertDoesNotThrow(() -> ProtoUtils.toProto(tenantProfile).toByteArray());
TenantProfile deserialized = assertDoesNotThrow(() -> JavaSerDesUtil.decode(serialized));
TenantProfile deserialized = assertDoesNotThrow(() -> ProtoUtils.fromProto(TransportProtos.TenantProfileProto.parseFrom(serialized)));
assertThat(deserialized).isEqualTo(tenantProfile);
assertThat(deserialized.getProfileData()).isNotNull();
assertThat(deserialized.getProfileData().getQueueConfiguration()).isNotEmpty();

Loading…
Cancel
Save