首页 > 解决方案 > 保留消息的顺序 - 执行器服务 java

问题描述

假设我们有一个接收一组事件的进程。对于每个事件,我们调用一个执行器服务来处理另一个线程中的传入事件。我想知道是否会保留事件的顺序?如果它影响事件的顺序,我如何在不使用队列的情况下保留事件的顺序。

public void process(PacketContext context) {

      if (context == null) {
        log.error("Packet context is null");
        return;
      }

      PacketContextProtoOuterClass.PacketContextProto packetContextProto =
          PacketContextProtoTranslator.translate(context);

      for (String clientId : clientList) {
        String key = clientId + ServicesProto.topicType.PACKET_CONTEXT.toString();
        Notification notification =
            Notification.newBuilder()
                .setClientId(clientId)
                .setPacketContext(packetContextProto)
                .build();
        if (observerMap.containsKey(key)) {
          Runnable runnable =
              () -> {
                observerMap.get(key).onNext(notification);
              };

          executorService.execute(runnable);
}

标签: javamultithreadingexecutorservice

解决方案


推荐阅读