Improvement to handling of subscription updates
This commit is contained in:
parent
9f2bae9815
commit
a87a3d684e
@ -21,12 +21,6 @@ import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.thingsboard.common.util.ThingsBoardThreadFactory;
|
||||
import org.thingsboard.server.common.data.EntityType;
|
||||
import org.thingsboard.server.common.data.EntityView;
|
||||
import org.thingsboard.server.common.data.id.EntityId;
|
||||
import org.thingsboard.server.common.data.id.EntityViewId;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.dao.entityview.EntityViewService;
|
||||
import org.thingsboard.server.gen.transport.TransportProtos;
|
||||
import org.thingsboard.server.queue.discovery.ClusterTopologyChangeEvent;
|
||||
import org.thingsboard.server.queue.discovery.PartitionChangeEvent;
|
||||
@ -36,7 +30,6 @@ import org.thingsboard.server.common.msg.queue.TopicPartitionInfo;
|
||||
import org.thingsboard.server.common.msg.queue.TbCallback;
|
||||
import org.thingsboard.server.queue.util.TbCoreComponent;
|
||||
import org.thingsboard.server.service.queue.TbClusterService;
|
||||
import org.thingsboard.server.service.telemetry.DefaultTelemetryWebSocketService;
|
||||
import org.thingsboard.server.service.telemetry.sub.AlarmSubscriptionUpdate;
|
||||
import org.thingsboard.server.service.telemetry.sub.TelemetrySubscriptionUpdate;
|
||||
|
||||
@ -49,7 +42,6 @@ import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@TbCoreComponent
|
||||
@ -59,9 +51,6 @@ public class DefaultTbLocalSubscriptionService implements TbLocalSubscriptionSer
|
||||
private final Set<TopicPartitionInfo> currentPartitions = ConcurrentHashMap.newKeySet();
|
||||
private final Map<String, Map<Integer, TbSubscription>> subscriptionsBySessionId = new ConcurrentHashMap<>();
|
||||
|
||||
@Autowired
|
||||
private EntityViewService entityViewService;
|
||||
|
||||
@Autowired
|
||||
private PartitionService partitionService;
|
||||
|
||||
@ -72,17 +61,17 @@ public class DefaultTbLocalSubscriptionService implements TbLocalSubscriptionSer
|
||||
@Lazy
|
||||
private SubscriptionManagerService subscriptionManagerService;
|
||||
|
||||
private ExecutorService wsCallBackExecutor;
|
||||
private ExecutorService subscriptionUpdateExecutor;
|
||||
|
||||
@PostConstruct
|
||||
public void initExecutor() {
|
||||
wsCallBackExecutor = Executors.newSingleThreadExecutor(ThingsBoardThreadFactory.forName("ws-sub-callback"));
|
||||
subscriptionUpdateExecutor = Executors.newWorkStealingPool(20);
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
public void shutdownExecutor() {
|
||||
if (wsCallBackExecutor != null) {
|
||||
wsCallBackExecutor.shutdownNow();
|
||||
if (subscriptionUpdateExecutor != null) {
|
||||
subscriptionUpdateExecutor.shutdownNow();
|
||||
}
|
||||
}
|
||||
|
||||
@ -148,7 +137,7 @@ public class DefaultTbLocalSubscriptionService implements TbLocalSubscriptionSer
|
||||
update.getLatestValues().forEach((key, value) -> attrSub.getKeyStates().put(key, value));
|
||||
break;
|
||||
}
|
||||
subscription.getUpdateConsumer().accept(sessionId, update);
|
||||
subscriptionUpdateExecutor.submit(() -> subscription.getUpdateConsumer().accept(sessionId, update));
|
||||
}
|
||||
callback.onSuccess();
|
||||
}
|
||||
@ -158,7 +147,7 @@ public class DefaultTbLocalSubscriptionService implements TbLocalSubscriptionSer
|
||||
TbSubscription subscription = subscriptionsBySessionId
|
||||
.getOrDefault(sessionId, Collections.emptyMap()).get(update.getSubscriptionId());
|
||||
if (subscription != null && subscription.getType() == TbSubscriptionType.ALARMS) {
|
||||
subscription.getUpdateConsumer().accept(sessionId, update);
|
||||
subscriptionUpdateExecutor.submit(() -> subscription.getUpdateConsumer().accept(sessionId, update));
|
||||
}
|
||||
callback.onSuccess();
|
||||
}
|
||||
|
||||
@ -941,8 +941,8 @@
|
||||
"provision-strategy": "Provision strategy",
|
||||
"provision-strategy-required": "Provision strategy is required.",
|
||||
"provision-strategy-disabled": "Disabled",
|
||||
"provision-strategy-created-new": "Allow create new devices",
|
||||
"provision-strategy-check-pre-provisioned": "Check pre provisioned devices",
|
||||
"provision-strategy-created-new": "Allow to create new devices",
|
||||
"provision-strategy-check-pre-provisioned": "Check for pre-provisioned devices",
|
||||
"provision-device-key": "Provision device key",
|
||||
"provision-device-key-required": "Provision device key is required.",
|
||||
"provision-device-secret": "Provision device secret",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user