Skill Profile

Message Broker Patterns

Kafka, RabbitMQ, NATS — queue patterns, routing, dead letter

Backend Development Message Queues & Event Streaming

Roles

9

where this skill appears

Levels

5

structured growth path

Mandatory requirements

29

the other 16 optional

Domain

Backend Development

Group

Message Queues & Event Streaming

Last updated

3/17/2026

How to Use

Choose your current level and compare expectations. The items below show what to cover to advance to the next level.

What is Expected at Each Level

The table shows how skill depth grows from Junior to Principal. Click a row to see details.

Role Required Description
Backend Developer (C#/.NET) Understands message broker patterns in .NET: publish-subscribe, request-reply, and competing consumers with MassTransit/NServiceBus. Follows team conventions for producing and consuming messages via RabbitMQ or Azure Service Bus.
Backend Developer (Elixir) Understands message broker patterns in Elixir/OTP: pub-sub with Broadway, work queues via GenStage. Follows team conventions for consuming messages from RabbitMQ/Kafka using built-in concurrency primitives and supervision trees.
Backend Developer (Go) Required Understands message broker patterns in Go: pub-sub, fan-out, and work queues with channels and goroutines. Follows team conventions for integrating with NATS, Kafka, or RabbitMQ using Go client libraries.
Backend Developer (Java/Kotlin) Understands message broker patterns in Java/Spring: pub-sub with Spring Cloud Stream, JMS templates, and Kafka listeners. Follows team conventions for producing and consuming messages with Spring Boot auto-configuration.
Backend Developer (Node.js) Understands message broker patterns in Node.js: pub-sub with BullMQ, event-driven messaging with amqplib. Follows team conventions for async message processing using queues and event emitters in Express/Fastify services.
Backend Developer (PHP) Required Understands message broker patterns in PHP: pub-sub with Symfony Messenger, queue workers with Laravel Queues. Follows team conventions for dispatching and consuming messages using Redis, RabbitMQ, or SQS drivers.
Backend Developer (Python) Understands basic message broker concepts: publish/subscribe, point-to-point, message queues. Can send and receive messages via RabbitMQ (pika) or Redis pub/sub. Knows why async communication between services is needed.
Backend Developer (Rust) Understands message broker patterns in Rust: pub-sub with lapin (AMQP), async consumers with tokio channels. Follows team conventions for type-safe message serialization with serde and reliable delivery patterns.
Backend Developer (Scala) Understands message broker patterns in Scala: pub-sub with Akka Streams/ZIO Streams, Kafka integration via Alpakka. Follows team conventions for functional message processing with effect systems and backpressure handling.
Role Required Description
Backend Developer (C#/.NET) Required Works with messaging in .NET: configures MassTransit with consumer/saga, uses NServiceBus for enterprise messaging, applies Azure Service Bus with sessions for ordered processing. Implements retry policies via Polly and configures dead letter handling.
Backend Developer (Elixir) Required Works with messaging in Elixir: uses Broadway for concurrent message processing from RabbitMQ/Kafka/SQS, configures GenStage for internal event processing pipeline. Applies OTP supervisor patterns for fault-tolerant message processing with automatic restart.
Backend Developer (Go) Required Confidently works with message brokers in Go: implements consumer groups in Kafka via segmentio/kafka-go or Sarama, configures NATS JetStream for durable messaging, applies worker pool patterns for parallel processing. Handles poison messages and configures retry with backoff.
Backend Developer (Java/Kotlin) Required Works with messaging in Java ecosystem: uses Spring Kafka for Kafka integration, Spring Cloud Stream for broker abstraction, configures consumer groups and partition assignment. Applies @KafkaListener with concurrency for parallel processing and configures error handler with retry.
Backend Developer (Node.js) Required Works with message brokers in Node.js: uses KafkaJS for Kafka integration, configures NestJS microservices with RabbitMQ/Kafka transport, implements pub/sub via Redis Streams. Applies consumer groups and configures retry logic with exponential backoff.
Backend Developer (PHP) Required Works with messaging in PHP: uses Symfony Messenger with RabbitMQ/Redis transport, configures Laravel Horizon for queue monitoring, applies routing by message type. Handles failed jobs through retry and dead letter queues, configures priority queues.
Backend Developer (Python) Required Works with message brokers in Python projects: uses Celery with RabbitMQ/Redis for background tasks, implements pub/sub via confluent-kafka or aiokafka, applies competing consumers and fan-out patterns. Configures dead letter queues for error handling.
Backend Developer (Rust) Required Works with message brokers in Rust: implements consumer groups through rdkafka with offset management, uses NATS through async-nats for lightweight messaging, applies tokio channels for internal message passing. Handles backpressure through bounded channels and flow control.
Backend Developer (Scala) Required Works with messaging in Scala ecosystem: uses Alpakka Kafka with Akka Streams for reactive processing, configures consumer groups with committable sources, implements at-least-once delivery through offset committing. Applies fs2-kafka for functional stream processing with cats-effect.
Role Required Description
Backend Developer (C#/.NET) Required Designs messaging architecture for .NET microservices: implements outbox pattern via EF Core with Debezium/polling publisher, configures MassTransit courier for routing slip pattern, integrates Kafka via Confluent .NET Client. Designs event-driven architecture with MediatR for internal events.
Backend Developer (Elixir) Required Designs messaging architecture for Elixir systems: defines boundaries between BEAM distribution and external brokers, implements event sourcing through Commanded framework, configures Broadway with custom acknowledger for exactly-once semantics. Optimizes concurrent processing through process pooling.
Backend Developer (Go) Required Designs messaging systems in Go: implements transactional outbox via database polling or CDC, designs idempotent consumers with deduplication, configures message ordering guarantees. Optimizes throughput through batch processing and zero-allocation serialization.
Backend Developer (Java/Kotlin) Required Designs messaging architecture for Java microservices: implements transactional outbox via Spring @Transactional + Debezium, configures exactly-once processing in Kafka with transactional producer, designs schema evolution via Confluent Schema Registry. Optimizes consumer throughput via batch listener.
Backend Developer (Node.js) Required Designs messaging architecture for Node.js services: implements transactional outbox with MongoDB change streams or PostgreSQL LISTEN/NOTIFY, configures Kafka with exactly-once semantics via idempotent producer. Designs event schema management and consumer idempotency via deduplication store.
Backend Developer (PHP) Required Designs messaging architecture for PHP systems: implements event-driven communication between PHP services via RabbitMQ with exchange routing, integrates PHP with Kafka via php-rdkafka for event streaming. Designs idempotent consumers and transactional outbox for consistency.
Backend Developer (Python) Required Designs messaging architecture for Python services: chooses between RabbitMQ, Kafka, Redis Streams for different scenarios, implements transactional outbox for delivery guarantees, configures exactly-once semantics in Kafka. Designs schema registry for message format evolution.
Backend Developer (Rust) Required Designs high-performance messaging systems in Rust: implements zero-copy deserialization for maximum throughput, designs custom message routing through tokio task scheduling, configures batch processing with configurable flush intervals. Optimizes memory allocation for sustained high-throughput processing.
Backend Developer (Scala) Required Designs messaging architecture for Scala: implements exactly-once processing through Kafka transactions with Alpakka, designs event sourcing with Akka Persistence or EventStoreDB, configures stream processing with Flink/Kafka Streams through Scala API. Optimizes backpressure and parallelism.
Role Required Description
Backend Developer (C#/.NET) Required Standardizes messaging in .NET ecosystem: chooses between MassTransit, NServiceBus and Wolverine, designs event sourcing with EventStoreDB/Marten, implements saga orchestration for distributed transactions. Creates internal NuGet packages for standardizing messaging patterns.
Backend Developer (Elixir) Required Standardizes messaging in the Elixir ecosystem: designs architecture with Commanded for CQRS/ES, implements EventStore for durable event log, creates internal libraries for standardizing Broadway pipelines. Defines patterns for distributed saga through process managers.
Backend Developer (Go) Required Defines messaging architecture for the Go platform: standardizes internal event bus via Watermill or custom framework, designs event schema management with Protobuf/Avro, implements distributed tracing for message flows. Develops saga orchestration and compensation patterns.
Backend Developer (Java/Kotlin) Required Standardizes messaging in the company's Java ecosystem: chooses between Spring Cloud Stream, Axon Framework, Eventuate for event-driven architecture, designs saga orchestration with Temporal or Axon Saga. Implements event store for audit and replay, defines topic governance strategy.
Backend Developer (Node.js) Required Standardizes messaging in Node.js ecosystem: creates internal SDK for broker abstraction, designs event catalog with typed events via TypeScript, implements distributed tracing for message flows. Defines saga and choreography patterns for Node.js.
Backend Developer (PHP) Required Standardizes messaging in the PHP ecosystem: defines async communication patterns considering PHP process model limitations, implements Ecotone Framework for CQRS/event sourcing, designs PHP monolith integration with event-driven microservices. Trains teams on messaging best practices.
Backend Developer (Python) Required Defines messaging strategy for the organization: standardizes patterns (saga, choreography vs orchestration, event sourcing), implements monitoring/alerting for message lag and consumer health. Designs Kafka topic partitioning for optimal parallelization and data locality.
Backend Developer (Rust) Required Defines messaging architecture for Rust system: creates internal messaging framework with broker abstraction, designs event sourcing with custom Rust event store, standardizes serialization through Serde with schema evolution. Mentors on idiomatic message processing in async Rust.
Backend Developer (Scala) Required Standardizes messaging in Scala ecosystem: chooses between Alpakka, fs2-kafka and ZIO Kafka for different teams, designs event-driven architecture with CQRS through Akka Projection, implements schema registry integration with Avro/Protobuf for type-safe evolution.
Role Required Description
Backend Developer (C#/.NET) Shapes enterprise messaging strategy for .NET: designs multi-transport architecture (Azure Service Bus + Kafka + RabbitMQ), defines governance for event-driven systems. Influences architectural decisions on event sourcing and CQRS adoption at organizational level.
Backend Developer (Elixir) Shapes messaging strategy for the Elixir platform: designs hybrid architecture of BEAM clustering + Kafka for cross-language event streaming, defines when to use Phoenix PubSub vs external broker. Influences Elixir messaging ecosystem development (Broadway, Commanded, GenStage).
Backend Developer (Go) Shapes Go event-driven architecture strategy: designs multi-datacenter messaging with eventual consistency guarantees, defines event versioning and schema migration patterns. Influences streaming platform architecture with Kafka/Pulsar/NATS for processing millions of events per second.
Backend Developer (Java/Kotlin) Shapes enterprise messaging strategy: designs multi-cluster Kafka platform with cross-datacenter replication, defines event-driven architecture standards at organizational level. Influences choice between Kafka, Pulsar, RabbitMQ for different use cases considering TCO and operational complexity.
Backend Developer (Node.js) Shapes event-driven strategy for Node.js platform: designs real-time event processing pipeline with Kafka Streams/ksqlDB, defines event sourcing patterns with event store. Influences streaming platform architecture considering Node.js event loop model and backpressure handling.
Backend Developer (PHP) Shapes messaging strategy for the PHP platform: defines how PHP systems participate in enterprise event-driven architecture, designs async processing approaches considering FPM/Swoole/RoadRunner runtime. Influences architectural decisions for transitioning from synchronous to event-driven in PHP legacy.
Backend Developer (Python) Shapes platform async communication strategy: designs multi-region messaging with Active-Active Kafka replication, defines governance for schema evolution and topic naming conventions. Influences event-driven platform architecture considering compliance and data retention requirements.
Backend Developer (Rust) Shapes strategy for Rust in critical messaging components: designs Rust-based message router/proxy for multi-protocol support, defines streaming platform architecture with sub-millisecond latency. Contributes to open-source messaging infrastructure (Fluvio, NATS).
Backend Developer (Scala) Shapes streaming strategy for Scala platform: designs real-time processing pipeline with Apache Flink/Spark Structured Streaming on Scala, defines architecture decision records for event sourcing vs traditional messaging. Influences development of functional approach to messaging in Scala ecosystem.

Community

👁 Watch ✏️ Suggest Change Sign in to suggest changes
📋 Proposals
No proposals yet for Message Broker Patterns
Loading comments...