[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71RF028F07V4QKNDPFE7NQH":3,"skill-same:01M71RF028F07V4QKNDPFE7NQH":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":12,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":33,"install":34,"resources":47},"01M71RF028F07V4QKNDPFE7NQH","azure-compute-batch-java",null,"javiertarazon\u002Fide-agente-free-jt7-","javiertarazon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F153141207?v=4","01M71R52TB3S9HXKH6WSNT8A7V","01M71R52VG5KS2DKDDH4GDQ30A",0,"MIT","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fazure-compute-batch-java\u002FSKILL.md",[],[17,18,19,20,21,22],"azure compute","azure","azure compute batch java","java","batch","compute","2026-11-10 13:02:02",false,"---\nname: azure-compute-batch-java\ndescription: \"|\"\n  Azure Batch SDK for Java. Run large-scale parallel and HPC batch jobs with pools, jobs, tasks, and compute nodes.\n  Triggers: \"BatchClient java\", \"azure batch java\", \"batch pool java\", \"batch job java\", \"HPC java\", \"parallel computing java\".\nrisk: unknown\nsource: community\n---\n\n# Azure Batch SDK for Java\n\nClient library for running large-scale parallel and high-performance computing (HPC) batch jobs in Azure.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-compute-batch\u003C\u002FartifactId>\n    \u003Cversion>1.0.0-beta.5\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Prerequisites\n\n- Azure Batch account\n- Pool configured with compute nodes\n- Azure subscription\n\n## Environment Variables\n\n```bash\nAZURE_BATCH_ENDPOINT=https:\u002F\u002F\u003Caccount>.\u003Cregion>.batch.azure.com\nAZURE_BATCH_ACCOUNT=\u003Caccount-name>\nAZURE_BATCH_ACCESS_KEY=\u003Caccount-key>\n```\n\n## Client Creation\n\n### With Microsoft Entra ID (Recommended)\n\n```java\nimport com.azure.compute.batch.BatchClient;\nimport com.azure.compute.batch.BatchClientBuilder;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\nBatchClient batchClient = new BatchClientBuilder()\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .endpoint(System.getenv(\"AZURE_BATCH_ENDPOINT\"))\n    .buildClient();\n```\n\n### Async Client\n\n```java\nimport com.azure.compute.batch.BatchAsyncClient;\n\nBatchAsyncClient batchAsyncClient = new BatchClientBuilder()\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .endpoint(System.getenv(\"AZURE_BATCH_ENDPOINT\"))\n    .buildAsyncClient();\n```\n\n### With Shared Key Credentials\n\n```java\nimport com.azure.core.credential.AzureNamedKeyCredential;\n\nString accountName = System.getenv(\"AZURE_BATCH_ACCOUNT\");\nString accountKey = System.getenv(\"AZURE_BATCH_ACCESS_KEY\");\nAzureNamedKeyCredential sharedKeyCreds = new AzureNamedKeyCredential(accountName, accountKey);\n\nBatchClient batchClient = new BatchClientBuilder()\n    .credential(sharedKeyCreds)\n    .endpoint(System.getenv(\"AZURE_BATCH_ENDPOINT\"))\n    .buildClient();\n```\n\n## Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| Pool | Collection of compute nodes that run tasks |\n| Job | Logical grouping of tasks |\n| Task | Unit of computation (command\u002Fscript) |\n| Node | VM that executes tasks |\n| Job Schedule | Recurring job creation |\n\n## Pool Operations\n\n### Create Pool\n\n```java\nimport com.azure.compute.batch.models.*;\n\nbatchClient.createPool(new BatchPoolCreateParameters(\"myPoolId\", \"STANDARD_DC2s_V2\")\n    .setVirtualMachineConfiguration(\n        new VirtualMachineConfiguration(\n            new BatchVmImageReference()\n                .setPublisher(\"Canonical\")\n                .setOffer(\"UbuntuServer\")\n                .setSku(\"22_04-lts\")\n                .setVersion(\"latest\"),\n            \"batch.node.ubuntu 22.04\"))\n    .setTargetDedicatedNodes(2)\n    .setTargetLowPriorityNodes(0), null);\n```\n\n### Get Pool\n\n```java\nBatchPool pool = batchClient.getPool(\"myPoolId\");\nSystem.out.println(\"Pool state: \" + pool.getState());\nSystem.out.println(\"Current dedicated nodes: \" + pool.getCurrentDedicatedNodes());\n```\n\n### List Pools\n\n```java\nimport com.azure.core.http.rest.PagedIterable;\n\nPagedIterable\u003CBatchPool> pools = batchClient.listPools();\nfor (BatchPool pool : pools) {\n    System.out.println(\"Pool: \" + pool.getId() + \", State: \" + pool.getState());\n}\n```\n\n### Resize Pool\n\n```java\nimport com.azure.core.util.polling.SyncPoller;\n\nBatchPoolResizeParameters resizeParams = new BatchPoolResizeParameters()\n    .setTargetDedicatedNodes(4)\n    .setTargetLowPriorityNodes(2);\n\nSyncPoller\u003CBatchPool, BatchPool> poller = batchClient.beginResizePool(\"myPoolId\", resizeParams);\npoller.waitForCompletion();\nBatchPool resizedPool = poller.getFinalResult();\n```\n\n### Enable AutoScale\n\n```java\nBatchPoolEnableAutoScaleParameters autoScaleParams = new BatchPoolEnableAutoScaleParameters()\n    .setAutoScaleEvaluationInterval(Duration.ofMinutes(5))\n    .setAutoScaleFormula(\"$TargetDedicatedNodes = min(10, $PendingTasks.GetSample(TimeInterval_Minute * 5));\");\n\nbatchClient.enablePoolAutoScale(\"myPoolId\", autoScaleParams);\n```\n\n### Delete Pool\n\n```java\nSyncPoller\u003CBatchPool, Void> deletePoller = batchClient.beginDeletePool(\"myPoolId\");\ndeletePoller.waitForCompletion();\n```\n\n## Job Operations\n\n### Create Job\n\n```java\nbatchClient.createJob(\n    new BatchJobCreateParameters(\"myJobId\", new BatchPoolInfo().setPoolId(\"myPoolId\"))\n        .setPriority(100)\n        .setConstraints(new BatchJobConstraints()\n            .setMaxWallClockTime(Duration.ofHours(24))\n            .setMaxTaskRetryCount(3)),\n    null);\n```\n\n### Get Job\n\n```java\nBatchJob job = batchClient.getJob(\"myJobId\", null, null);\nSystem.out.println(\"Job state: \" + job.getState());\n```\n\n### List Jobs\n\n```java\nPagedIterable\u003CBatchJob> jobs = batchClient.listJobs(new BatchJobsListOptions());\nfor (BatchJob job : jobs) {\n    System.out.println(\"Job: \" + job.getId() + \", State: \" + job.getState());\n}\n```\n\n### Get Task Counts\n\n```java\nBatchTaskCountsResult counts = batchClient.getJobTaskCounts(\"myJobId\");\nSystem.out.println(\"Active: \" + counts.getTaskCounts().getActive());\nSystem.out.println(\"Running: \" + counts.getTaskCounts().getRunning());\nSystem.out.println(\"Completed: \" + counts.getTaskCounts().getCompleted());\n```\n\n### Terminate Job\n\n```java\nBatchJobTerminateParameters terminateParams = new BatchJobTerminateParameters()\n    .setTerminationReason(\"Manual termination\");\nBatchJobTerminateOptions options = new BatchJobTerminateOptions().setParameters(terminateParams);\n\nSyncPoller\u003CBatchJob, BatchJob> poller = batchClient.beginTerminateJob(\"myJobId\", options, null);\npoller.waitForCompletion();\n```\n\n### Delete Job\n\n```java\nSyncPoller\u003CBatchJob, Void> deletePoller = batchClient.beginDeleteJob(\"myJobId\");\ndeletePoller.waitForCompletion();\n```\n\n## Task Operations\n\n### Create Single Task\n\n```java\nBatchTaskCreateParameters task = new BatchTaskCreateParameters(\"task1\", \"echo 'Hello World'\");\nbatchClient.createTask(\"myJobId\", task);\n```\n\n### Create Task with Exit Conditions\n\n```java\nbatchClient.createTask(\"myJobId\", new BatchTaskCreateParameters(\"task2\", \"cmd \u002Fc exit 3\")\n    .setExitConditions(new ExitConditions()\n        .setExitCodeRanges(Arrays.asList(\n            new ExitCodeRangeMapping(2, 4, \n                new ExitOptions().setJobAction(BatchJobActionKind.TERMINATE)))))\n    .setUserIdentity(new UserIdentity()\n        .setAutoUser(new AutoUserSpecification()\n            .setScope(AutoUserScope.TASK)\n            .setElevationLevel(ElevationLevel.NON_ADMIN))),\n    null);\n```\n\n### Create Task Collection (up to 100)\n\n```java\nList\u003CBatchTaskCreateParameters> taskList = Arrays.asList(\n    new BatchTaskCreateParameters(\"task1\", \"echo Task 1\"),\n    new BatchTaskCreateParameters(\"task2\", \"echo Task 2\"),\n    new BatchTaskCreateParameters(\"task3\", \"echo Task 3\")\n);\nBatchTaskGroup taskGroup = new BatchTaskGroup(taskList);\nBatchCreateTaskCollectionResult result = batchClient.createTaskCollection(\"myJobId\", taskGroup);\n```\n\n### Create Many Tasks (no limit)\n\n```java\nList\u003CBatchTaskCreateParameters> tasks = new ArrayList\u003C>();\nfor (int i = 0; i \u003C 1000; i++) {\n    tasks.add(new BatchTaskCreateParameters(\"task\" + i, \"echo Task \" + i));\n}\nbatchClient.createTasks(\"myJobId\", tasks);\n```\n\n### Get Task\n\n```java\nBatchTask task = batchClient.getTask(\"myJobId\", \"task1\");\nSystem.out.println(\"Task state: \" + task.getState());\nSystem.out.println(\"Exit code: \" + task.getExecutionInfo().getExitCode());\n```\n\n### List Tasks\n\n```java\nPagedIterable\u003CBatchTask> tasks = batchClient.listTasks(\"myJobId\");\nfor (BatchTask task : tasks) {\n    System.out.println(\"Task: \" + task.getId() + \", State: \" + task.getState());\n}\n```\n\n### Get Task Output\n\n```java\nimport com.azure.core.util.BinaryData;\nimport java.nio.charset.StandardCharsets;\n\nBinaryData stdout = batchClient.getTaskFile(\"myJobId\", \"task1\", \"stdout.txt\");\nSystem.out.println(new String(stdout.toBytes(), StandardCharsets.UTF_8));\n```\n\n### Terminate Task\n\n```java\nbatchClient.terminateTask(\"myJobId\", \"task1\", null, null);\n```\n\n## Node Operations\n\n### List Nodes\n\n```java\nPagedIterable\u003CBatchNode> nodes = batchClient.listNodes(\"myPoolId\", new BatchNodesListOptions());\nfor (BatchNode node : nodes) {\n    System.out.println(\"Node: \" + node.getId() + \", State: \" + node.getState());\n}\n```\n\n### Reboot Node\n\n```java\nSyncPoller\u003CBatchNode, BatchNode> rebootPoller = batchClient.beginRebootNode(\"myPoolId\", \"nodeId\");\nrebootPoller.waitForCompletion();\n```\n\n### Get Remote Login Settings\n\n```java\nBatchNodeRemoteLoginSettings settings = batchClient.getNodeRemoteLoginSettings(\"myPoolId\", \"nodeId\");\nSystem.out.println(\"IP: \" + settings.getRemoteLoginIpAddress());\nSystem.out.println(\"Port: \" + settings.getRemoteLoginPort());\n```\n\n## Job Schedule Operations\n\n### Create Job Schedule\n\n```java\nbatchClient.createJobSchedule(new BatchJobScheduleCreateParameters(\"myScheduleId\",\n    new BatchJobScheduleConfiguration()\n        .setRecurrenceInterval(Duration.ofHours(6))\n        .setDoNotRunUntil(OffsetDateTime.now().plusDays(1)),\n    new BatchJobSpecification(new BatchPoolInfo().setPoolId(\"myPoolId\"))\n        .setPriority(50)),\n    null);\n```\n\n### Get Job Schedule\n\n```java\nBatchJobSchedule schedule = batchClient.getJobSchedule(\"myScheduleId\");\nSystem.out.println(\"Schedule state: \" + schedule.getState());\n```\n\n## Error Handling\n\n```java\nimport com.azure.compute.batch.models.BatchErrorException;\nimport com.azure.compute.batch.models.BatchError;\n\ntry {\n    batchClient.getPool(\"nonexistent-pool\");\n} catch (BatchErrorException e) {\n    BatchError error = e.getValue();\n    System.err.println(\"Error code: \" + error.getCode());\n    System.err.println(\"Message: \" + error.getMessage().getValue());\n    \n    if (\"PoolNotFound\".equals(error.getCode())) {\n        System.err.println(\"The specified pool does not exist.\");\n    }\n}\n```\n\n## Best Practices\n\n1. **Use Entra ID** — Preferred over shared key for authentication\n2. **Use management SDK for pools** — `azure-resourcemanager-batch` supports managed identities\n3. **Batch task creation** — Use `createTaskCollection` or `createTasks` for multiple tasks\n4. **Handle LRO properly** — Pool resize, delete operations are long-running\n5. **Monitor task counts** — Use `getJobTaskCounts` to track progress\n6. **Set constraints** — Configure `maxWallClockTime` and `maxTaskRetryCount`\n7. **Use low-priority nodes** — Cost savings for fault-tolerant workloads\n8. **Enable autoscale** — Dynamically adjust pool size based on workload\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| Maven Package | https:\u002F\u002Fcentral.sonatype.com\u002Fartifact\u002Fcom.azure\u002Fazure-compute-batch |\n| GitHub | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-java\u002Ftree\u002Fmain\u002Fsdk\u002Fbatch\u002Fazure-compute-batch |\n| API Documentation | https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Fcom.azure.compute.batch |\n| Product Docs | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fbatch\u002F |\n| REST API | https:\u002F\u002Flearn.microsoft.com\u002Frest\u002Fapi\u002Fbatchservice\u002F |\n| Samples | https:\u002F\u002Fgithub.com\u002Fazure\u002Fazure-batch-samples |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure Batch SDK for Java\n\nClient library for running large-scale parallel and high-performance computing (HPC) batch jobs in Azure.\n\n## Installation\n\n```xml\n\u003Cdependency>\n    \u003CgroupId>com.azure\u003C\u002FgroupId>\n    \u003CartifactId>azure-compute-batch\u003C\u002FartifactId>\n    \u003Cversion>1.0.0-beta.5\u003C\u002Fversion>\n\u003C\u002Fdependency>\n```\n\n## Prerequisites\n\n- Azure Batch account\n- Pool configured with compute nodes\n- Azure subscription\n\n## Environment Variables\n\n```bash\nAZURE_BATCH_ENDPOINT=https:\u002F\u002F\u003Caccount>.\u003Cregion>.batch.azure.com\nAZURE_BATCH_ACCOUNT=\u003Caccount-name>\nAZURE_BATCH_ACCESS_KEY=\u003Caccount-key>\n```\n\n## Client Creation\n\n### With Microsoft Entra ID (Recommended)\n\n```java\nimport com.azure.compute.batch.BatchClient;\nimport com.azure.compute.batch.BatchClientBuilder;\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\nBatchClient batchClient = new BatchClientBuilder()\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .endpoint(System.getenv(\"AZURE_BATCH_ENDPOINT\"))\n    .buildClient();\n```\n\n### Async Client\n\n```java\nimport com.azure.compute.batch.BatchAsyncClient;\n\nBatchAsyncClient batchAsyncClient = new BatchClientBuilder()\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .endpoint(System.getenv(\"AZURE_BATCH_ENDPOINT\"))\n    .buildAsyncClient();\n```\n\n### With Shared Key Credentials\n\n```java\nimport com.azure.core.credential.AzureNamedKeyCredential;\n\nString accountName = System.getenv(\"AZURE_BATCH_ACCOUNT\");\nString accountKey = System.getenv(\"AZURE_BATCH_ACCESS_KEY\");\nAzureNamedKeyCredential sharedKeyCreds = new AzureNamedKeyCredential(accountName, accountKey);\n\nBatchClient batchClient = new BatchClientBuilder()\n    .credential(sharedKeyCreds)\n    .endpoint(System.getenv(\"AZURE_BATCH_ENDPOINT\"))\n    .buildClient();\n```\n\n## Key Concepts\n\n| Concept | Description |\n|---------|-------------|\n| Pool | Collection of compute nodes that run tasks |\n| Job | Logical grouping of tasks |\n| Task | Unit of computation (command\u002Fscript) |\n| Node | VM that executes tasks |\n| Job Schedule | Recurring job creation |\n\n## Pool Operations\n\n### Create Pool\n\n```java\nimport com.azure.compute.batch.models.*;\n\nbatchClient.createPool(new BatchPoolCreateParameters(\"myPoolId\", \"STANDARD_DC2s_V2\")\n    .setVirtualMachineConfiguration(\n        new VirtualMachineConfiguration(\n            new BatchVmImageReference()\n                .setPublisher(\"Canonical\")\n                .setOffer(\"UbuntuServer\")\n                .setSku(\"22_04-lts\")\n                .setVersion(\"latest\"),\n            \"batch.node.ubuntu 22.04\"))\n    .setTargetDedicatedNodes(2)\n    .setTargetLowPriorityNodes(0), null);\n```\n\n### Get Pool\n\n```java\nBatchPool pool = batchClient.getPool(\"myPoolId\");\nSystem.out.println(\"Pool state: \" + pool.getState());\nSystem.out.println(\"Current dedicated nodes: \" + pool.getCurrentDedicatedNodes());\n```\n\n### List Pools\n\n```java\nimport com.azure.core.http.rest.PagedIterable;\n\nPagedIterable\u003CBatchPool> pools = batchClient.listPools();\nfor (BatchPool pool : pools) {\n    System.out.println(\"Pool: \" + pool.getId() + \", State: \" + pool.getState());\n}\n```\n\n### Resize Pool\n\n```java\nimport com.azure.core.util.polling.SyncPoller;\n\nBatchPoolResizeParameters resizeParams = new BatchPoolResizeParameters()\n    .setTargetDedicatedNodes(4)\n    .setTargetLowPriorityNodes(2);\n\nSyncPoller\u003CBatchPool, BatchPool> poller = batchClient.beginResizePool(\"myPoolId\", resizeParams);\npoller.waitForCompletion();\nBatchPool resizedPool = poller.getFinalResult();\n```\n\n### Enable AutoScale\n\n```java\nBatchPoolEnableAutoScaleParameters autoScaleParams = new BatchPoolEnableAutoScaleParameters()\n    .setAutoScaleEvaluationInterval(Duration.ofMinutes(5))\n    .setAutoScaleFormula(\"$TargetDedicatedNodes = min(10, $PendingTasks.GetSample(TimeInterval_Minute * 5));\");\n\nbatchClient.enablePoolAutoScale(\"myPoolId\", autoScaleParams);\n```\n\n### Delete Pool\n\n```java\nSyncPoller\u003CBatchPool, Void> deletePoller = batchClient.beginDeletePool(\"myPoolId\");\ndeletePoller.waitForCompletion();\n```\n\n## Job Operations\n\n### Create Job\n\n```java\nbatchClient.createJob(\n    new BatchJobCreateParameters(\"myJobId\", new BatchPoolInfo().setPoolId(\"myPoolId\"))\n        .setPriority(100)\n        .setConstraints(new BatchJobConstraints()\n            .setMaxWallClockTime(Duration.ofHours(24))\n            .setMaxTaskRetryCount(3)),\n    null);\n```\n\n### Get Job\n\n```java\nBatchJob job = batchClient.getJob(\"myJobId\", null, null);\nSystem.out.println(\"Job state: \" + job.getState());\n```\n\n### List Jobs\n\n```java\nPagedIterable\u003CBatchJob> jobs = batchClient.listJobs(new BatchJobsListOptions());\nfor (BatchJob job : jobs) {\n    System.out.println(\"Job: \" + job.getId() + \", State: \" + job.getState());\n}\n```\n\n### Get Task Counts\n\n```java\nBatchTaskCountsResult counts = batchClient.getJobTaskCounts(\"myJobId\");\nSystem.out.println(\"Active: \" + counts.getTaskCounts().getActive());\nSystem.out.println(\"Running: \" + counts.getTaskCounts().getRunning());\nSystem.out.println(\"Completed: \" + counts.getTaskCounts().getCompleted());\n```\n\n### Terminate Job\n\n```java\nBatchJobTerminateParameters terminateParams = new BatchJobTerminateParameters()\n    .setTerminationReason(\"Manual termination\");\nBatchJobTerminateOptions options = new BatchJobTerminateOptions().setParameters(terminateParams);\n\nSyncPoller\u003CBatchJob, BatchJob> poller = batchClient.beginTerminateJob(\"myJobId\", options, null);\npoller.waitForCompletion();\n```\n\n### Delete Job\n\n```java\nSyncPoller\u003CBatchJob, Void> deletePoller = batchClient.beginDeleteJob(\"myJobId\");\ndeletePoller.waitForCompletion();\n```\n\n## Task Operations\n\n### Create Single Task\n\n```java\nBatchTaskCreateParameters task = new BatchTaskCreateParameters(\"task1\", \"echo 'Hello World'\");\nbatchClient.createTask(\"myJobId\", task);\n```\n\n### Create Task with Exit Conditions\n\n```java\nbatchClient.createTask(\"myJobId\", new BatchTaskCreateParameters(\"task2\", \"cmd \u002Fc exit 3\")\n    .setExitConditions(new ExitConditions()\n        .setExitCodeRanges(Arrays.asList(\n            new ExitCodeRangeMapping(2, 4, \n                new ExitOptions().setJobAction(BatchJobActionKind.TERMINATE)))))\n    .setUserIdentity(new UserIdentity()\n        .setAutoUser(new AutoUserSpecification()\n            .setScope(AutoUserScope.TASK)\n            .setElevationLevel(ElevationLevel.NON_ADMIN))),\n    null);\n```\n\n### Create Task Collection (up to 100)\n\n```java\nList\u003CBatchTaskCreateParameters> taskList = Arrays.asList(\n    new BatchTaskCreateParameters(\"task1\", \"echo Task 1\"),\n    new BatchTaskCreateParameters(\"task2\", \"echo Task 2\"),\n    new BatchTaskCreateParameters(\"task3\", \"echo Task 3\")\n);\nBatchTaskGroup taskGroup = new BatchTaskGroup(taskList);\nBatchCreateTaskCollectionResult result = batchClient.createTaskCollection(\"myJobId\", taskGroup);\n```\n\n### Create Many Tasks (no limit)\n\n```java\nList\u003CBatchTaskCreateParameters> tasks = new ArrayList\u003C>();\nfor (int i = 0; i \u003C 1000; i++) {\n    tasks.add(new BatchTaskCreateParameters(\"task\" + i, \"echo Task \" + i));\n}\nbatchClient.createTasks(\"myJobId\", tasks);\n```\n\n### Get Task\n\n```java\nBatchTask task = batchClient.getTask(\"myJobId\", \"task1\");\nSystem.out.println(\"Task state: \" + task.getState());\nSystem.out.println(\"Exit code: \" + task.getExecutionInfo().getExitCode());\n```\n\n### List Tasks\n\n```java\nPagedIterable\u003CBatchTask> tasks = batchClient.listTasks(\"myJobId\");\nfor (BatchTask task : tasks) {\n    System.out.println(\"Task: \" + task.getId() + \", State: \" + task.getState());\n}\n```\n\n### Get Task Output\n\n```java\nimport com.azure.core.util.BinaryData;\nimport java.nio.charset.StandardCharsets;\n\nBinaryData stdout = batchClient.getTaskFile(\"myJobId\", \"task1\", \"stdout.txt\");\nSystem.out.println(new String(stdout.toBytes(), StandardCharsets.UTF_8));\n```\n\n### Terminate Task\n\n```java\nbatchClient.terminateTask(\"myJobId\", \"task1\", null, null);\n```\n\n## Node Operations\n\n### List Nodes\n\n```java\nPagedIterable\u003CBatchNode> nodes = batchClient.listNodes(\"myPoolId\", new BatchNodesListOptions());\nfor (BatchNode node : nodes) {\n    System.out.println(\"Node: \" + node.getId() + \", State: \" + node.getState());\n}\n```\n\n### Reboot Node\n\n```java\nSyncPoller\u003CBatchNode, BatchNode> rebootPoller = batchClient.beginRebootNode(\"myPoolId\", \"nodeId\");\nrebootPoller.waitForCompletion();\n```\n\n### Get Remote Login Settings\n\n```java\nBatchNodeRemoteLoginSettings settings = batchClient.getNodeRemoteLoginSettings(\"myPoolId\", \"nodeId\");\nSystem.out.println(\"IP: \" + settings.getRemoteLoginIpAddress());\nSystem.out.println(\"Port: \" + settings.getRemoteLoginPort());\n```\n\n## Job Schedule Operations\n\n### Create Job Schedule\n\n```java\nbatchClient.createJobSchedule(new BatchJobScheduleCreateParameters(\"myScheduleId\",\n    new BatchJobScheduleConfiguration()\n        .setRecurrenceInterval(Duration.ofHours(6))\n        .setDoNotRunUntil(OffsetDateTime.now().plusDays(1)),\n    new BatchJobSpecification(new BatchPoolInfo().setPoolId(\"myPoolId\"))\n        .setPriority(50)),\n    null);\n```\n\n### Get Job Schedule\n\n```java\nBatchJobSchedule schedule = batchClient.getJobSchedule(\"myScheduleId\");\nSystem.out.println(\"Schedule state: \" + schedule.getState());\n```\n\n## Error Handling\n\n```java\nimport com.azure.compute.batch.models.BatchErrorException;\nimport com.azure.compute.batch.models.BatchError;\n\ntry {\n    batchClient.getPool(\"nonexistent-pool\");\n} catch (BatchErrorException e) {\n    BatchError error = e.getValue();\n    System.err.println(\"Error code: \" + error.getCode());\n    System.err.println(\"Message: \" + error.getMessage().getValue());\n    \n    if (\"PoolNotFound\".equals(error.getCode())) {\n        System.err.println(\"The specified pool does not exist.\");\n    }\n}\n```\n\n## Best Practices\n\n1. **Use Entra ID** — Preferred over shared key for authentication\n2. **Use management SDK for pools** — `azure-resourcemanager-batch` supports managed identities\n3. **Batch task creation** — Use `createTaskCollection` or `createTasks` for multiple tasks\n4. **Handle LRO properly** — Pool resize, delete operations are long-running\n5. **Monitor task counts** — Use `getJobTaskCounts` to track progress\n6. **Set constraints** — Configure `maxWallClockTime` and `maxTaskRetryCount`\n7. **Use low-priority nodes** — Cost savings for fault-tolerant workloads\n8. **Enable autoscale** — Dynamically adjust pool size based on workload\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| Maven Package | https:\u002F\u002Fcentral.sonatype.com\u002Fartifact\u002Fcom.azure\u002Fazure-compute-batch |\n| GitHub | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-java\u002Ftree\u002Fmain\u002Fsdk\u002Fbatch\u002Fazure-compute-batch |\n| API Documentation | https:\u002F\u002Flearn.microsoft.com\u002Fjava\u002Fapi\u002Fcom.azure.compute.batch |\n| Product Docs | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fbatch\u002F |\n| REST API | https:\u002F\u002Flearn.microsoft.com\u002Frest\u002Fapi\u002Fbatchservice\u002F |\n| Samples | https:\u002F\u002Fgithub.com\u002Fazure\u002Fazure-batch-samples |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{},"release\u002Fv4.2.11-panel-pro","a92ea02bcf7e2b3dbaf46d49696c29a3cb490d4f",".github\u002Fskills\u002Fazure-compute-batch-java","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-","https:\u002F\u002Fgithub.com\u002Fjaviertarazon","2026-07-12 07:10:45",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-compute-batch-java",{"tool":40,"command":41},"bunx","bunx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-compute-batch-java",{"tool":43,"command":44},"pnpm","pnpm dlx skills add javiertarazon\u002Fide-agente-free-jt7- --skill azure-compute-batch-java","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fazure-compute-batch-java\u002FSKILL.md",true,[],[49,81,108,128,143,165],{"skillNo":50,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":60,"publishedAt":23},"01M71TQ7Q6Z10VWF3C2H5X1KW9","zustand-store-ts","Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state\u002Faction separation. Use when building React state management, creating global stores, or implementing reacti...","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzustand-store-ts\u002FSKILL.md",[55],{"categoryNo":56,"categoryName":57,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80],"zustand","store","zustand store ts","community","middleware","implementing","use","react state management","when","unknown","react","with","state","create","state management","typescript","action","management","separation","global",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":90,"publishedAt":23},"01M71TQ5EAR40G6W0MV5ZDVEZT","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzoom-automation\u002FSKILL.md",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000023","Skill与智能体开发",[91,92,93,64,94,95,96,97,98,70,99,100,101,102,103,104,105,106,78,107],"zoom automation","zoom","automation","creation","for","search","schemas","MCP","first","via","meeting","search tools","tracking","webinars","composio","recordings","Tools",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":23},"01M71TQ29B1EYBCEAP1ZBGXQ1A","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzoho-crm-automation\u002FSKILL.md",[114],{"categoryNo":88,"categoryName":89,"taxonomyType":58,"taxonomyTypeDesc":59},[116,117,93,118,119,120,64,121,122,95,123,96,97,124,98,70,125,126,127,74],"crm automation","zoho crm automation","crm","zoho crm","zoho","leads","manage leads","manage","records","convert","tasks","contacts",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":135,"publishedAt":23},"01M71TPZPMN60DH0XV58KVHY23","zendesk-automation","Automate Zendesk tasks via Rube MCP (Composio): tickets, users, organizations, replies. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzendesk-automation\u002FSKILL.md",[134],{"categoryNo":88,"categoryName":89,"taxonomyType":58,"taxonomyTypeDesc":59},[136,93,137,64,95,96,97,98,138,70,126,139,140,99,100,141,102,105,107,142],"zendesk automation","zendesk","organizations","replies","users","tickets","automate",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":23},"01M71TPXDWKHKG4N6TVEPXWD0N","zapier-make-patterns","No-code automation democratizes workflow building. Zapier and Make (formerly Integromat) let non-developers automate business processes without writing code. But no-code doesn't mean no-complexity ...","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fzapier-make-patterns\u002FSKILL.md",[],[150,151,152,153,154,155,156,157,158,93,159,70,160,161,162,163,164,142],"zapier make patterns","zapier","patterns","make","No-Code","complexity","writing","spawner","business","workflow","code","integromat","apache","processes","but",{"skillNo":166,"name":167,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":23},"01M71TPT5T10WXNKW9G7ZXZ27W","youtube-summarizer","Extract transcripts from YouTube videos and generate comprehensive, detailed summaries using intelligent analysis frameworks","https:\u002F\u002Fgithub.com\u002Fjaviertarazon\u002Fide-agente-free-jt7-\u002Fblob\u002Frelease\u002Fv4.2.11-panel-pro\u002F.github\u002Fskills\u002Fyoutube-summarizer\u002FSKILL.md",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":58,"taxonomyTypeDesc":59},"01JBSEEDCAT000000000000016","图像与多媒体",[175,176,177,178,64,179,180,181,182,183,184,185,160,186,187,188,189,190,191,192],"summarizer","youtube","youtube summarizer","Video","content-analysis","frameworks","copilot","2025","github-copilot","extract transcripts","analysis","codex","cli","summaries","github","generate","summarization","2026"]