Messaging Endpoints

Competing Consumers

Run multiple consumers against the same point-to-point channel so workload is distributed while each message is handled by only one instance.

scaleconcurrencyqueue
The problem
How can a messaging client process multiple messages concurrently?
Adapted from Enterprise Integration Patterns under CC BY 3.0. The visualization and explanatory content on this page are original GateSift material.
Original GateSift visualization

How Competing Consumers works

A dedicated endpoint hides transport details from the application that sends or receives messages.

Channel
Competing Consumers
Application
1

Connect to the messaging channel through an adapter, client or connector.

2

Apply Competing Consumers to encapsulate delivery, consumption and transport concerns.

3

Expose a simpler application-facing contract and operational boundary.

GateSift explanation

What this pattern helps you decide

Run multiple consumers against the same point-to-point channel so workload is distributed while each message is handled by only one instance.

What happens when processing fails or the same message is delivered twice?
Where does state, correlation or routing configuration live?
How will operators trace the message and understand the decision path?
Common Azure implementations

Where you may see it

  • Scaled Service Bus-triggered Functions
  • Container Apps KEDA scaling
  • Multiple BizTalk host instances
GateSift relevance

How the analyzers can surface it

  • Concurrent consumer candidates
  • Ordered delivery constraints

Pattern detection is contextual. GateSift should present these as architectural signals, not claim a pattern is implemented solely because one policy statement or adapter exists.

Source, licence and attribution

The pattern name and selected problem statement are adapted from Enterprise Integration Patterns by Gregor Hohpe and Bobby Woolf under CC BY 3.0. GateSift summaries, Azure mappings, analyzer guidance and diagrams are original. No endorsement by the original authors is implied.

Back to pattern library