cloudemu

Message Queue

Queues with FIFO deduplication and dead-letter queues

Message Queue

Emulates message queues: SQS (AWS), ServiceBus (Azure), PubSub (GCP).

Provider Mapping

ProviderServiceAccess
AWSSQSaws.SQS
AzureService Busazure.ServiceBus
GCPPub/Subgcp.PubSub

Key Operations

Queue Management

import mqdriver "github.com/stackshy/cloudemu/messagequeue/driver"

aws.SQS.CreateQueue(ctx, mqdriver.QueueConfig{
    Name: "orders",
    Attributes: map[string]string{
        "VisibilityTimeout": "30",
    },
})

// FIFO queue
aws.SQS.CreateQueue(ctx, mqdriver.QueueConfig{
    Name:     "orders.fifo",
    FIFOQueue: true,
})

Send and Receive Messages

// Send
aws.SQS.SendMessage(ctx, "orders", mqdriver.SendMessageInput{
    Body: "order-123",
    Attributes: map[string]string{"priority": "high"},
})

// Receive
messages, _ := aws.SQS.ReceiveMessages(ctx, "orders", mqdriver.ReceiveInput{
    MaxMessages:     10,
    WaitTimeSeconds: 0,
})

// Delete after processing
aws.SQS.DeleteMessage(ctx, "orders", messages[0].ReceiptHandle)

Batch Operations

aws.SQS.SendMessageBatch(ctx, "orders", []mqdriver.SendMessageInput{
    {Body: "order-1"}, {Body: "order-2"}, {Body: "order-3"},
})

Dead-Letter Queues

Configure a DLQ and messages exceeding the max receive count automatically move there.

Realistic Behaviors

  • FIFO deduplication: FIFO queues enforce 5-minute deduplication windows using MessageDeduplicationId
  • Visibility timeout: received messages are invisible to other consumers until timeout expires or message is deleted
  • Dead-letter queues: messages exceeding max receive count are automatically moved to the DLQ

On this page