grpc-standards

RFC-33 compliant gRPC service standards for Java services.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "grpc-standards" with this command: npx skills add bitsoex/bitso-java/bitsoex-bitso-java-grpc-standards

gRPC Standards

RFC-33 compliant gRPC service standards for Java services.

When to use this skill

  • Creating new gRPC services or clients

  • Implementing protobuf contracts

  • Adding resilience patterns (retry, bulkhead, circuit breaker)

  • Configuring deadline propagation

  • Setting up protobuf linting with Buf

  • Implementing gRPC error handling

Skill Contents

Sections

  • When to use this skill (L24-L32)

  • Quick Start (L54-L97)

  • Service Implementation (L98-L120)

  • Client Configuration (L121-L146)

  • References (L147-L154)

  • Related Rules (L155-L159)

  • Related Skills (L160-L165)

Available Resources

📚 references/ - Detailed documentation

  • contracts

  • linting

  • resilience

Quick Start

  1. Add Dependencies

gradle/libs.versions.toml

[versions] grpc = "1.78.0" protobuf = "4.33.0"

[libraries] grpc-protobuf = { module = "io.grpc:grpc-protobuf", version.ref = "grpc" } grpc-stub = { module = "io.grpc:grpc-stub", version.ref = "grpc" } grpc-api = { module = "io.grpc:grpc-api", version.ref = "grpc" } protobuf-java = { module = "com.google.protobuf:protobuf-java", version.ref = "protobuf" } grpc-resilience-starter = { module = "com.bitso.commons:grpc-resilience-starter", version = "LATEST" }

[plugins] protobuf = { id = "com.google.protobuf", version = "0.9.6" }

  1. Configure gRPC Server

application.yml

grpc: server: port: 8201

  1. Implement Service Handler

@GrpcService public class MyServiceHandler extends MyServiceGrpc.MyServiceImplBase { @Override public void myMethod(MyRequest request, StreamObserver<MyResponse> responseObserver) { // Implementation responseObserver.onNext(response); responseObserver.onCompleted(); } }

Service Implementation

Error Handling

Use FailureHelper to send errors in metadata:

public static StatusRuntimeException createStatusRuntimeException( Status.Code code, DataCommonsProto.Failure failure) { Metadata metadata = new Metadata(); metadata.put(FAILURE_DETAILS_KEY, failure); return code.toStatus().withDescription(failure.getCode()).asRuntimeException(metadata); }

gRPC Error Codes

Code Usage

INTERNAL

Infrastructure errors

UNKNOWN

Only used by gRPC core

FAILED_PRECONDITION

Business errors

Client Configuration

With Resilience

grpc: client: my-service: address: dns:/${MY_SERVICE_HOST:localhost}:${GRPC_PORT:8201} negotiation-type: PLAINTEXT service-config: method-config: - name: [] timeout: PT5S retry-policy: max-attempts: 3 initial-backoff: PT1S max-backoff: PT5S backoff-multiplier: 1.5 retryable-status-codes: - UNAVAILABLE bulkhead: max-concurrent-calls: 10 max-wait-duration: PT1S

References

Reference Description

references/contracts.md Protobuf contract guidelines, versioning, documentation

references/resilience.md Deadline propagation, retry, bulkhead, circuit breaker

references/linting.md Buf linting setup and custom rules

Related Rules

  • .cursor/rules/java-grpc-services.mdc

  • gRPC service standards

  • .cursor/rules/java-grpc-resilience.mdc

  • Resilience configuration

Related Skills

Skill Purpose

gradle-standards Dependency configuration

java-testing Testing gRPC services

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

gradle-standards

No summary provided by upstream source.

Repository SourceNeeds Review
General

java-coverage

No summary provided by upstream source.

Repository SourceNeeds Review
General

java-standards

No summary provided by upstream source.

Repository SourceNeeds Review
General

rest-api

No summary provided by upstream source.

Repository SourceNeeds Review