[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS26X7Y26R76BAWZ2GJX6D":3,"skill-same:01M6CS26X7Y26R76BAWZ2GJX6D":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6CS26X7Y26R76BAWZ2GJX6D","azure-compute-batch-java",null,"Azure Batch SDK for Java. Run large-scale parallel and HPC batch jobs with pools, jobs, tasks, and compute nodes.","Sam-06060\u002Fjarvis-assistant","Sam-06060","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F208600848?v=4","01M6CRKT7C7FXD21V6HXF293S0","Samson Frank Ganta","01M6CRKTBEKYFD8YX5Z1GT99EE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-compute-batch-java\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"azure compute","azure","azure compute batch java","java","batch","compute","sdk","tasks","run","parallel","Nodes","jobs","community","2026-11-10 10:12:30",false,"---\nname: azure-compute-batch-java\ndescription: Azure Batch SDK for Java. Run large-scale parallel and HPC batch jobs with pools, jobs, tasks, and compute nodes.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\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",{"name":5,"risk":37,"source":31,"date_added":38,"description":7},"unknown","2026-02-27","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-compute-batch-java",0,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant","https:\u002F\u002Fgithub.com\u002FSam-06060","Mobile Application Developer | Kotlin | Flutter, KMP, Swfit, Android,Swift UI | Building at Saar It Resources | Creator of Jarvis (AI Assistant)","2026-06-23 05:13:38",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill azure-compute-batch-java",{"tool":53,"command":54},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill azure-compute-batch-java",{"tool":56,"command":57},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill azure-compute-batch-java","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-compute-batch-java\u002FSKILL.md",true,[],[62,75,91,118,136,163],{"skillNo":63,"name":64,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":72,"publishedAt":32},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[73,74],"Test Skill","test",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":32},"01M6GDRQ40HX22MA6XWC31RHHK","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzustand-store-ts\u002FSKILL.md",[],[82,83,84,85,86,87,88,31,89,90],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":100,"publishedAt":32},"01M6GDRKEA0WE670SPFWX5GKCN","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\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoom-automation\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000023","Skill与智能体开发",[101,102,103,104,105,106,107,108,109,110,111,112,113,114,31,115,116,117],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","management","tracking",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":125,"publishedAt":32},"01M6GDRFS1452PC71JQ38S24HR","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\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoho-crm-automation\u002FSKILL.md",[124],{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},[126,101,127,128,129,130,131,31,106,132,114,133,111,110,105,134,89,26,107,135],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","manage",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":145,"publishedAt":32},"01M6GDRCKQBAVTGHX5XBH26KPZ","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzod-validation-expert\u002FSKILL.md",[142],{"categoryNo":143,"categoryName":144,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000009","前端开发",[146,147,148,149,150,90,151,152,153,154,155,156,85,157,158,159,160,31,161,162],"expert","zod","zod validation expert","validation","react","safe","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":170,"publishedAt":32},"01M6GDR658B08K4MY0RWD4A6EH","zeroize-audit","Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C\u002FC++\u002FRust code handling secrets, keys, passwords, or other sensitive data.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzeroize-audit\u002FSKILL.md",[169],{"categoryNo":98,"categoryName":99,"taxonomyType":70,"taxonomyTypeDesc":71},[171,172,173,174,175,176,177,178,31,179,180,181,182,183,184,185,186,187,188,107],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","code","rust"]