|
|
|
@ -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(); |
|
|
|
} |
|
|
|
|