You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法运行Akka工作拉取Java示例,求提供启动主方法样例

Akka工作拉取(Work Pull)示例可执行主方法实现

以下是适配目标示例的可运行主方法,包含完整启动逻辑:

import akka.actor.typed.ActorSystem;
import akka.actor.typed.Behavior;
import akka.actor.typed.javadsl.Behaviors;
import akka.cluster.sharding.typed.javadsl.ClusterSharding;
import akka.cluster.sharding.typed.javadsl.Entity;
import akka.cluster.sharding.typed.javadsl.EntityTypeKey;

public class WorkPullingExampleMain {

  public static void main(String[] args) {
    // 创建Akka集群ActorSystem
    ActorSystem<Void> system = ActorSystem.create(Behaviors.empty(), "WorkPullingCluster");

    // 初始化ClusterSharding组件
    ClusterSharding sharding = ClusterSharding.get(system);

    // 注册ImageConverter实体类型,用于分片管理工作节点
    EntityTypeKey<ImageConverter.Command> converterTypeKey = ImageConverter.ENTITY_TYPE_KEY;
    sharding.init(
      Entity.of(
        converterTypeKey,
        entityContext -> ImageConverter.create(entityContext.getEntityId())));

    // 启动工作调度者(生产者:ImageWorkManager)
    system.systemActorOf(ImageWorkManager.create(sharding), "image-work-manager");

    // 模拟启动3个工作节点(消费者:ImageConverter),可按需调整数量
    for (int i = 1; i <= 3; i++) {
      String converterId = "converter-" + i;
      sharding.entityRefFor(converterTypeKey, converterId).tell(ImageConverter.Start.INSTANCE);
    }

    // 添加JVM关闭钩子,优雅终止Akka系统
    Runtime.getRuntime().addShutdownHook(new Thread(() -> {
      system.terminate();
    }));
  }
}

关键说明

  • 主方法会初始化Akka集群环境,同时启动**生产者(ImageWorkManager)和多个消费者(ImageConverter)**节点
  • 依托ClusterSharding实现ImageConverter的分片管理,契合原示例的工作拉取设计逻辑
  • 消费者节点数量可通过循环变量调整,模拟多节点协作场景
  • 内置关闭钩子,确保程序退出时能优雅终止Akka系统资源

内容的提问来源于stack exchange,提问作者Nandu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:16:14