К основному содержанию
скилл

azure-cosmos-java — скилл для Claude Code: Cosmos DB на Java

Скилл подсказывает агенту, как работать с Azure Cosmos DB из Java: клиенты, запросы, ключи разделов и обработка ошибок.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add microsoft/skills --skill azure-cosmos-java -a claude-code
Открыть на GitHub

Что делает azure-cosmos-java

Скилл описывает клиентскую библиотеку azure-cosmos для NoSQL API: синхронный CosmosClient и асинхронный CosmosAsyncClient, иерархию CosmosDatabase и CosmosContainer, создание базы и контейнера, CRUD и запросы через queryItems. Внутри — примеры кода на Java и таблицы: уровни согласованности от Strong до Eventual, назначение классов, советы по ключу раздела.

Для работы нужны переменные окружения COSMOS_ENDPOINT и COSMOS_KEY, а зависимость подключается через Maven — либо напрямую com.azure:azure-cosmos, либо через azure-sdk-bom. Без ключа и эндпоинта клиент не соберётся, так что проверьте доступ к аккаунту до того, как просить агента писать код.

Отдельный блок — обработка CosmosException: статус 409 значит, что элемент уже есть, 429 — что упёрлись в лимит запросов, и в ответе есть getRetryAfterDuration(). Ещё скилл напоминает переиспользовать один клиент на всё приложение и включать direct mode для низкой задержки в проде.

Какие задачи решает

  • создать базу и контейнер в Cosmos DB из Java
  • переписать синхронные вызовы на CosmosAsyncClient с цепочкой flatMap
  • разобрать статус 429 и повторить запрос после задержки
  • выбрать ключ раздела под распределение данных
  • посчитать стоимость операции в RU через getRequestCharge

Примеры запросов агенту

  • Напиши на Java клиент CosmosClient к Cosmos DB, эндпоинт и ключ берём из переменных окружения
  • Сделай асинхронный CRUD для контейнера myContainer с ключом раздела /partitionKey
  • Добавь обработку CosmosException для кодов 409 и 429

Как установить azure-cosmos-java

1Через Skills CLI (Vercel)

npx skills add microsoft/skills --skill azure-cosmos-java -a claude-code

2Вручную: положить файлы

~/.claude/skills/azure-cosmos-java/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/azure-cosmos-java/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о azure-cosmos-java

Как установить azure-cosmos-java в Claude Code?

Выполните npx skills add microsoft/skills --skill azure-cosmos-java -a claude-code. Файл скилла окажется по пути ~/.claude/skills/azure-cosmos-java/SKILL.md.

Что делает azure-cosmos-java?

Даёт агенту справочник по Java SDK для Azure Cosmos DB: сборка клиента, работа с базами и контейнерами, запросы, уровни согласованности и разбор ошибок.

Что нужно, чтобы скилл заработал?

Зависимость com.azure:azure-cosmos в Maven и переменные окружения COSMOS_ENDPOINT и COSMOS_KEY — без них примеры из скилла не запустятся.

Исходный текст

SKILL.md · MIT
---
name: azure-cosmos-java
description: |
  Azure Cosmos DB SDK for Java. NoSQL database operations with global distribution, multi-model support, and reactive patterns.
  Triggers: "CosmosClient java", "CosmosAsyncClient", "cosmos database java", "cosmosdb java", "document database java".
license: MIT
metadata:
  author: Microsoft
  version: "1.0.0"
  package: azure-cosmos
---

# Azure Cosmos DB SDK for Java

Client library for Azure Cosmos DB NoSQL API with global distribution and reactive patterns.

## Installation

```xml
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-cosmos</artifactId>
    <version>LATEST</version>
</dependency>
```

Or use Azure SDK BOM:

```xml
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-cosmos</artifactId>
    </dependency>
</dependencies>
```

## Environment Variables

```bash
COSMOS_ENDPOINT=https://<account>.documents.azure.com:443/
COSMOS_KEY=<your-primary-key>
```

## Authentication

### Key-based Authentication

```java
import com.azure.cosmos.CosmosClient;
import com.azure.cosmos.CosmosClientBuilder;

CosmosClient client = new CosmosClientBuilder()
    .endpoint(System.getenv("COSMOS_ENDPOINT"))
    .key(System.getenv("COSMOS_KEY"))
    .buildClient();
```

### Async Client

```java
import com.azure.cosmos.CosmosAsyncClient;

CosmosAsyncClient asyncClient = new CosmosClientBuilder()
    .endpoint(serviceEndpoint)
    .key(key)
    .buildAsyncClient();
```

### With Customizations

```java
import com.azure.cosmos.ConsistencyLevel;
import java.util.Arrays;

CosmosClient client = new CosmosClientBuilder()
    .endpoint(serviceEndpoint)
    .key(key)
    .directMode(directConnectionConfig, gatewayConnectionConfig)
    .consistencyLevel(ConsistencyLevel.SESSION)
    .connectionSharingAcrossClientsEnabled(true)
    .contentResponseOnWriteEnabled(true)
    .userAgentSuffix("my-application")
    .preferredRegions(Arrays.asList("West US", "East US"))
    .buildClient();
```

## Client Hierarchy

| Class | Purpose |
|-------|---------|
| `CosmosClient` / `CosmosAsyncClient` | Account-level operations |
| `CosmosDatabase` / `CosmosAsyncDatabase` | Database operations |
| `CosmosContainer` / `CosmosAsyncContainer` | Container/item operations |

## Core Workflow

### Create Database

```java
// Sync
client.createDatabaseIfNotExists("myDatabase")
    .map(response -> client.getDatabase(response.getProperties().getId()));

// Async with chaining
asyncClient.createDatabaseIfNotExists("myDatabase")
    .map(response -> asyncClient.getDatabase(response.getProperties().getId()))
    .subscribe(database -> System.out.println("Created: " + database.getId()));
```

### Create Container

```java
asyncClient.createDatabaseIfNotExists("myDatabase")
    .flatMap(dbResponse -> {
        String databaseId = dbResponse.getProperties().getId();
        return asyncClient.getDatabase(databaseId)
            .createContainerIfNotExists("myContainer", "/partitionKey")
            .map(containerResponse -> asyncClient.getDatabase(databaseId)
                .getContainer(containerResponse.getProperties().getId()));
    })
    .subscribe(container -> System.out.println("Container: " + container.getId()));
```

### CRUD Operations

```java
import com.azure.cosmos.models.PartitionKey;

CosmosAsyncContainer container = asyncClient
    .getDatabase("myDatabase")
    .getContainer("myContainer");

// Create
container.createItem(new User("1", "John Doe", "[email protected]"))
    .flatMap(response -> {
        System.out.println("Created: " + response.getItem());
        // Read
        return container.readItem(
            response.getItem().getId(),
            new PartitionKey(response.getItem().getId()),
            User.class);
    })
    .flatMap(response -> {
        System.out.println("Read: " + response.getItem());
        // Update
        User user = response.getItem();
        user.setEmail("[email protected]");
        return container.replaceItem(
            user,
            user.getId(),
            new PartitionKey(user.getId()));
    })
    .flatMap(response -> {
        // Delete
        return container.deleteItem(
            response.getItem().getId(),
            new PartitionKey(response.getItem().getId()));
    })
    .block();
```

### Query Documents

```java
import com.azure.cosmos.models.CosmosQueryRequestOptions;
import com.azure.cosmos.util.CosmosPagedIterable;

CosmosContainer container = client.getDatabase("myDatabase").getContainer("myContainer");

String query = "SELECT * FROM c WHERE c.status = @status";
CosmosQueryRequestOptions options = new CosmosQueryRequestOptions();

CosmosPagedIterable<User> results = container.queryItems(
    query,
    options,
    User.class
);

results.forEach(user -> System.out.println("User: " + user.getName()));
```

## Key Concepts

### Partition Keys

Choose a partition key with:
- High cardinality (many distinct values)
- Even distribution of data and requests
- Frequently used in queries

### Consistency Levels

| Level | Guarantee |
|-------|-----------|
| Strong | Linearizability |
| Bounded Staleness | Consistent prefix with bounded lag |
| Session | Consistent prefix within session |
| Consistent Prefix | Reads never see out-of-order writes |
| Eventual | No ordering guarantee |

### Request Units (RUs)

All operations consume RUs. Check response headers:

```java
CosmosItemResponse<User> response = container.createItem(user);
System.out.println("RU charge: " + response.getRequestCharge());
```

## Best Practices

1. **Reuse CosmosClient** — Create once, reuse throughout application
2. **Use async client** for high-throughput scenarios
3. **Choose partition key carefully** — Affects performance and scalability
4. **Enable content response on write** for immediate access to created items
5. **Configure preferred regions** for geo-distributed applications
6. **Handle 429 errors** with retry policies (built-in by default)
7. **Use direct mode** for lowest latency in production

## Error Handling

```java
import com.azure.cosmos.CosmosException;

try {
    container.createItem(item);
} catch (CosmosException e) {
    System.err.println("Status: " + e.getStatusCode());
    System.err.println("Message: " + e.getMessage());
    System.err.println("Request charge: " + e.getRequestCharge());
    
    if (e.getStatusCode() == 409) {
        System.err.println("Item already exists");
    } else if (e.getStatusCode() == 429) {
        System.err.println("Rate limited, retry after: " + e.getRetryAfterDuration());
    }
}
```

## Reference Links

| Resource | URL |
|----------|-----|
| Maven Package | https://central.sonatype.com/artifact/com.azure/azure-cosmos |
| API Documentation | https://azuresdkdocs.z19.web.core.windows.net/java/azure-cosmos/latest/index.html |
| Product Docs | https://learn.microsoft.com/azure/cosmos-db/ |
| Samples | https://github.com/Azure-Samples/azure-cosmos-java-sql-api-samples |
| Performance Guide | https://learn.microsoft.com/azure/cosmos-db/performance-tips-java-sdk-v4-sql |
| Troubleshooting | https://learn.microsoft.com/azure/cosmos-db/troubleshoot-java-sdk-v4-sql |

© Microsoft · MIT · microsoft/skills

Похожие скиллы

Все скиллы по теме «Данные и базы» →
xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. CX Codex +1 511 300установок caveman-evidence-review JuliusBrussee Скилл читает данные Caveman Cloud о расходах LLM, трассах и маршрутизации. Подходит для проверки того, куда уходит бюджет проекта. CX Codex +1 104 500установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок performance-optimization addyosmani Скилл для агентов ИИ-кодинга: сначала замеряет, потом чинит узкое место — от Core Web Vitals до N+1 запросов и индексов в базе. CX Codex +1 65 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора99

Весь набор →
azure-storage-queue-py Скилл подсказывает агенту, как работать с Azure Queue Storage из Python: отправка, приём и удаление сообщений. Пригодится, когда в проекте есть фоновые задачи. ★ 3 149звёзд репо azure-security-keyvault-keys-java Скилл для работы с ключами Azure Key Vault из Java: создание RSA и EC ключей, шифрование, подпись, HSM. Пригодится, когда агент пишет код на Azure SDK. ★ 3 149звёзд репо azure-monitor-ingestion-java Подсказывает агенту, как отправлять кастомные логи в Azure Monitor через Logs Ingestion API, DCR и DCE на Java. ★ 3 149звёзд репо azure-eventhub-java Скилл для работы с Azure Event Hubs SDK для Java: создание продюсеров и консьюмеров, батчи, партиции, чекпоинты. Пригодится при потоковой обработке событий. ★ 3 149звёзд репо azure-communication-common-java Скилл для работы с общими утилитами Azure Communication Services на Java: токены, идентификаторы пользователей, авторизация через Entra ID. ★ 3 149звёзд репо azure-communication-callautomation-java Скилл по Java SDK Azure Communication Services Call Automation: исходящие звонки, IVR, запись разговора, распознавание DTMF и речи. ★ 3 149звёзд репо azure-ai-vision-imageanalysis-java Скилл по Azure AI Vision SDK для Java: подсказывает агенту, как писать код для подписей к картинкам, OCR, детекции объектов и умной обрезки. ★ 3 149звёзд репо azure-ai-contentsafety-java Скилл для работы с Azure AI Content Safety SDK на Java: анализ текста и картинок, блоклисты, поиск вредного контента. ★ 3 149звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой