AMQP - Advanced Message Queuing Protocol

What is AMQP?

AMQP stands for Advanced Message Queuing Protocol. It is a messaging protocol that allows different applications or systems to send and receive messages reliably, even if they are built in different languages or run on different platforms.

Why is AMQP useful?

  • Decouples systems – Senders and receivers don’t need to be online at the same time.

  • Ensures reliable delivery – Messages won’t be lost, even if a system crashes.

  • Supports queuing, routing, and security – Making it ideal for enterprise messaging.

How it works?

  • Sender sends a message – An application sends a message to a message broker (like RabbitMQ).

  • Broker queues the message – The broker stores the message in a queue.

  • Receiver gets the message – Another application retrieves the message from the queue.

  • Acknowledgment – The receiver confirms it got the message, ensuring reliability.

Where is AMQP used?

  • Banking and finance – For secure, reliable transaction processing.

  • E-commerce – To handle orders, inventory updates, and notifications.

  • Microservices – For communication between loosely coupled services.

  • IoT systems – To manage data from many devices efficiently.

Which OSI layer does this protocol belong to?

  • It defines message formats, queues, exchanges, and routing rules.

  • It provides messaging services directly to applications.

  • It works over transport protocols like TCP, but its logic is at Layer 7 (Application Layer).

  • In this section, you are going to learn

  • Terminology

  • Version Info

AMQP

RFC

Year

Core Idea / Contribution

Version

0-8

AMQP Working Group Draft

2006

Early draft version; introduced basic queuing and routing concepts.

0-9

AMQP Working Group Draft

2006

Added improvements in message delivery and exchange types.

0-9-1

AMQP Working Group Draft

2008

Widely adopted version; used by RabbitMQ and others; introduced better interoperability.

0-10

AMQP Working Group Draft

2009

Introduced more advanced features like message flow control and session multiplexing.

1

OASIS Standard

2012

Major redesign; standardized wire-level protocol for full interoperability across vendors; supports messaging across firewalls and WANs.

  • setup

  • setup

Open Packet

S.No

Protocol Packets

Description

Size(Bytes)

1

Open

Initiates a connection between peers.

variable

container-id

A unique identifier for the container (client or server)

variable

initiating the connection.

hostname

The name of the host to which the container is connecting.Used for virtual hosting.

variable

max-frame-size

The largest frame size that the sender can accept.

4

Default is 4294967295 (4 GB).

channel-max

The highest channel number that can be used on the

2

connection. Default is 65535.

idle-time-out

The maximum idle time allowed before the connection is

4

considered dead.

outgoing-locales

A list of locales that the sender supports for informational text.

variable

incoming-locales

A list of locales that the sender expects for informational

variable

text.

offered-capabilities

Capabilities the sender supports and offers to the peer.

variable

desired-capabilities

Capabilities the sender expects the peer to support.

variable

properties

A set of connection properties (key-value pairs) for custom

variable

metadata.

Begin Packet

S.No

Protocol Packets

Description

Size(bytes)

2

Begin

Starts a session on a connection

remote-channel

The channel number of the session on the remote peer

2

next-outgoing-id

The transfer ID that will be assigned to the next message

4

sent on this session.

incoming-window

The number of incoming transfer frames the sender can

4

receive.

outgoing-window

The number of outgoing transfer frames the sender can

4

send.

handle-max

The maximum handle value that can be used on the

4

session. Default is 2^32 - 1.

offered-capabilities

Capabilities the sender supports and offers to the peer.

variable

desired-capabilities

Capabilities the sender expects the peer to support.

variable

properties

A set of session properties (key-value pairs).

variable

Attach Packet

S.No

Protocol Packets

Description

Size(bytes)

3

Attach

Attaches a link to a session

variable

name

Unique name of the link.

variable

handle

Unique handle for the link within the session.

4

role

Indicates if the link is a sender (false) or receiver (true).

1

snd-settle-mode

Sender settle mode (0: unsettled, 1: settled, 2: mixed).

1

rcv-settle-mode

Receiver settle mode (0: first, 1: second).

1

source

Describes the source of messages.

variable

target

Describes the target for messages.

variable

unsettled

Map of unsettled deliveries.

variable

incomplete-unsettled

Indicates if unsettled map is partial.

1

initial-delivery-count

Initial delivery ID for the link.

4

max-message-size

Maximum message size the link can handle.

8

offered-capabilities

Capabilities offered by the sender.

variable

desired-capabilities

Capabilities desired from the peer.

variable

properties

Link properties (key-value pairs).

variable

Transfer Packet

S.No

Protocol Packets

Description

Size(bytes)

4

Transfer

Transfers a message

variable

handle

Identifies the link on which the transfer is sent.

4

delivery-id

Unique ID for the delivery on this link.

4

delivery-tag

Used to identify the delivery.

variable

message-format

Format code for the message.

4

settled

Indicates if the delivery is settled.

1

more

Indicates if more message data follows in subsequent transfers.

1

rcv-settle-mode

Receiver settle mode override.

1

state

Current state of the delivery (e.g., accepted, rejected).

variable

resume

Indicates if this is a resumed delivery.

1

aborted

Indicates if the delivery was aborted.

1

batchable

Hints that the transfer can be batched.

1

Message Payload

The actual message content (application data).

variable

Disposition Packet

S.No

Protocol Packets

Description

Size(Bytes)

5

Disposition

Acknowledges message delivery

variable

role

true for receiver, false for sender.

1

first

ID of the first delivery affected.

4

last

ID of the last delivery affected (inclusive). If omitted, only first is affected.

4

settled

If true, the deliveries are considered settled.

1

state

The new state of the deliveries (e.g., accepted, rejected).

variable

batchable

Hint that the frame can be batched for performance.

1

Detach Packet

S.No

Protocol Packets

Description

Size(Bytes)

6

Detach

Detaches a link

handle

Identifies the link to be detached.

closed

If true, the link is permanently closed.

error

Provides error information if the detachment is due to an error.

End Packet

S.No

Protocol Packets

Description

Size(Bytes)

7

End

Ends a session

variable

error

Error condition

variable

close Packet

S.No

Protocol Packets

Description

Size(Bytes)

8

close

Closes a connection

variable

error

Error condition

variable

S.no

Use Case

Description

1

Enterprise Messaging Systems

Used in financial services, telecom, and logistics for reliable, secure, and asynchronous message delivery.

2

Microservices Communication

Enables decoupled services to communicate via message queues, improving scalability and fault tolerance.

3

Order Processing Systems

Ensures reliable and ordered delivery of messages in e-commerce and supply chain platforms.

4

Banking & Financial Transactions

Supports secure, transactional messaging for payment processing and trade systems.

5

Telecommunications

Handles signaling and control messages between network components with guaranteed delivery.

6

IoT Gateways

Acts as a broker between edge devices and cloud services, especially where message reliability is critical.

7

Workflow Engines

Coordinates tasks and events in distributed systems using message queues.

8

Data Ingestion Pipelines

Buffers and routes data from producers to analytics systems or databases.

9

Cloud Services Integration

Facilitates communication between cloud-native applications and legacy systems.

10

Healthcare Systems

Ensures secure and reliable exchange of patient data and alerts between systems.

S.no

Feature

Description

1

Reliable Messaging

Guarantees message delivery using acknowledgments, transactions and message persistence.

2

Interoperability

Standardized wire-level protocol ensures compatibility across different platforms and vendors.

3

Message Queuing

Supports queuing of messages for asynchronous communication between producers and consumers.

4

Routing Flexibility

Offers direct topic fanout and headers exchange types for flexible message routing.

5

Transactional Messaging

Supports atomic message operations for consistency in critical systems.

6

Flow Control

Manages message flow between sender and receiver to prevent overload.

7

Security

Supports authentication authorization and encryption (e.g., via TLS).

8

Multi-Channel Communication

Allows multiple logical channels over a single connection for efficient resource use.

9

Publisher Confirms

Ensures that messages are successfully received and processed by the broker.

10

Extensibility

Designed to be extensible for future messaging patterns and features.

Reliable Messaging - Testcases

#

Test Case

Description

Expected Result

1

Basic Acknowledgment

Send message and wait for consumer ack

Message is acknowledged

2

No Acknowledgment

Send message without consumer ack

Message is redelivered

3

Manual Acknowledgment

Consumer manually acks message

Message is removed from queue

4

Auto Acknowledgment

Consumer auto-acks on receipt

Message is not redelivered

5

Negative Acknowledgment

Consumer nacks message

Message is requeued or dead-lettered

6

Persistent Message

Send message with delivery mode = 2

Message survives broker restart

7

Non-Persistent Message

Send message with delivery mode = 1

Message is lost on broker restart

8

Transaction Commit

Send message in transaction and commit

Message is delivered

9

Transaction Rollback

Send message in transaction and rollback

Message is not delivered

10

Publisher Confirm Enabled

Enable confirms and publish

Publisher receives ack

11

Publisher Confirm Timeout

Simulate delay in confirm

Publisher times out

12

Consumer Crash Before Ack

Crash consumer before ack

Message is redelivered

13

Consumer Crash After Ack

Crash consumer after ack

Message is not redelivered

14

Network Drop During Delivery

Drop connection mid-delivery

Message is retried

15

Queue Overflow

Fill queue to max length

Excess messages are dropped or dead-lettered

16

Message TTL Expiry

Set TTL and delay consumption

Message expires

17

Queue TTL Expiry

Set queue TTL and delay usage

Queue is deleted

18

Broker Restart with Persistent Queue

Restart broker

Persistent messages remain

19

Broker Restart with Non-Persistent Queue

Restart broker

Non-persistent messages lost

20

Multiple Consumers with Ack

Use competing consumers

Only one receives and acks

21

Redelivery Count Limit

Set redelivery limit

Message is dead-lettered after limit

22

Dead Letter Exchange Routing

Use DLX for failed messages

Message routed to DLX

23

Message Priority Handling

Send messages with different priorities

Higher priority delivered first

24

Delayed Message Delivery

Use delayed exchange

Message delivered after delay

25

Message Ordering

Send ordered messages

Order is preserved

26

Message Duplication Prevention

Use deduplication logic

Duplicate messages are ignored

27

Message Loss Simulation

Drop message mid-route

Message is retried or logged

28

Message Replay

Requeue message manually

Message is redelivered

29

Message Filtering

Use headers or selectors

Only matching messages delivered

30

Message Compression

Send compressed message

Message is decompressed and delivered

31

Message Encryption

Encrypt message payload

Message is decrypted by consumer

32

High Throughput Reliability

Send 10K messages

All messages delivered and acked

33

Large Payload Reliability

Send 10MB message

Message is delivered and acked

34

Multi-Queue Delivery

Route message to multiple queues

All queues receive message

35

Multi-Exchange Routing

Use multiple exchanges

Message routed correctly

36

Consumer Prefetch Limit

Set prefetch = 1

One message delivered at a time

37

Consumer Throttling

Simulate slow consumer

Broker respects flow control

38

Message Redelivery Delay

Set redelivery delay

Message redelivered after delay

39

Message Expiry Notification

Enable expiry callback

Expiry is logged or notified

40

Message Loss Detection

Track message IDs

Missing messages are detected

41

Broker Crash Recovery

Crash broker mid-delivery

Persistent messages recovered

42

Cluster Failover

Fail primary node

Message delivery continues

43

Network Partition

Simulate split-brain

Messages are queued and synced

44

Message Audit Trail

Enable logging

All deliveries are logged

45

Message Replay from DLX

Replay from dead-letter queue

Message is reprocessed

46

Message Retry Policy

Set retry attempts

Message retried as configured

47

Message Delivery Metrics

Monitor delivery stats

Metrics are accurate

48

Message Delivery to Offline Consumer

Consumer offline

Message held until reconnect

49

Message Delivery with SASL Auth

Use secure auth

Message delivered securely

50

Message Delivery with TLS

Use TLS encryption

Message is encrypted in transit

Interoperability - Testcases

#

Test Case

Description

Expected Result

1

Java Producer to Python Consumer

Send message from Java client, receive in Python

Message is received correctly

2

.NET Producer to Node.js Consumer

Send from .NET, receive in Node.js

Message is received correctly

3

Python to C++

Send from Python, receive in C++

Message is received correctly

4

Cross-Vendor Broker Compatibility

Use RabbitMQ and Apache Qpid

Messages are exchanged successfully

5

AMQP 0-9-1 to 1.0 Compatibility

Test backward compatibility

Message is translated or rejected gracefully

6

Mixed Language Consumers

Use multiple languages as consumers

All receive messages correctly

7

Mixed Language Producers

Use multiple languages as producers

All messages are delivered

8

Broker Interoperability

Connect clients to different brokers

Messages are routed correctly

9

Cloud Broker Compatibility

Use AWS MQ and Azure Service Bus

Messages are exchanged

10

On-Prem to Cloud

Send from on-prem client to cloud broker

Message is delivered

11

Cloud to On-Prem

Send from cloud client to on-prem broker

Message is delivered

12

TLS Across Platforms

Secure connection across platforms

Message is encrypted and delivered

13

SASL Authentication

Authenticate using SASL across clients

Authentication succeeds

14

Unicode Payload

Send multilingual message

Message is received intact

15

Binary Payload

Send binary data

Data is received without corruption

16

Header Compatibility

Use custom headers

Headers are preserved

17

Property Compatibility

Use message properties

Properties are preserved

18

Exchange Type Compatibility

Use direct, topic, fanout

All types work across clients

19

Queue Declaration Compatibility

Declare queue from one client, use in another

Queue is accessible

20

Durable Queue Across Clients

Declare durable queue in one client

Other clients can use it

21

Temporary Queue Usage

Use temporary queues across clients

Queue is accessible during session

22

Message TTL Across Clients

Set TTL in one client, expire in another

TTL is respected

23

Message Priority Across Clients

Set priority in one client

Priority is honored

24

Message Redelivery Across Clients

Redeliver message to different client

Message is redelivered

25

Consumer Acknowledgment Across Clients

Ack from different client

Ack is accepted

26

Publisher Confirm Across Clients

Confirm from different client

Confirm is received

27

Transaction Across Clients

Start in one client, commit in another

Transaction is valid

28

Dead Letter Exchange Across Clients

DLX used across clients

Message is routed to DLX

29

Federation Across Brokers

Use federation to route messages

Message is delivered

30

Clustering Across Vendors

Use cluster of mixed brokers

Messages are routed

31

IPv4 and IPv6 Compatibility

Connect using both IP versions

Connection succeeds

32

NAT Traversal

Connect behind NAT

Connection and messaging succeed

33

VPN Compatibility

Connect over VPN

Messaging works

34

Firewall Compatibility

Pass through firewall rules

Messaging works

35

Load Balancer Compatibility

Use load balancer in front of broker

Messages are routed

36

Mobile Client Compatibility

Use mobile AMQP client

Message is delivered

37

IoT Device Compatibility

Use lightweight AMQP client

Message is delivered

38

WebSocket Transport

Use AMQP over WebSocket

Message is delivered

39

MQTT Bridge

Bridge AMQP and MQTT

Message is translated

40

JMS Compatibility

Use JMS client with AMQP broker

Message is delivered

41

REST to AMQP Gateway

Use REST to send AMQP message

Message is delivered

42

AMQP to Kafka Bridge

Bridge AMQP to Kafka

Message is forwarded

43

AMQP to HTTP Bridge

Bridge AMQP to HTTP

Message is translated

44

AMQP to Database

Store AMQP message in DB

Message is stored

45

AMQP to Email Gateway

Send AMQP message as email

Email is sent

46

AMQP to SMS Gateway

Send AMQP message as SMS

SMS is sent

47

AMQP to File System

Write AMQP message to file

File is created

48

AMQP to Cloud Function

Trigger cloud function

Function is invoked

49

AMQP to Serverless Workflow

Trigger serverless workflow

Workflow is executed

50

AMQP to Legacy System

Integrate with legacy system

Message is processed

Message Queuing - Testcases

#

Test Case

Description

Expected Result

1

Basic Queue Send/Receive

Send and receive a message via queue

Message is received

2

Queue Persistence

Declare durable queue

Queue survives broker restart

3

Temporary Queue

Declare auto-delete queue

Queue is deleted after disconnect

4

Multiple Consumers

Attach multiple consumers to queue

Messages are load-balanced

5

Single Consumer

Attach one consumer

All messages go to that consumer

6

Queue Overflow

Fill queue beyond limit

Excess messages are dropped or dead-lettered

7

Queue TTL

Set TTL on queue

Queue expires after inactivity

8

Message TTL in Queue

Set TTL on message

Message expires if not consumed

9

Queue with Priority

Enable priority

Higher priority messages delivered first

10

Queue with DLX

Attach dead-letter exchange

Expired messages are routed to DLX

11

Queue with Binding Key

Bind with specific routing key

Only matching messages are queued

12

Queue with Wildcard Binding

Use topic exchange with wildcard

Messages match pattern

13

Queue with Headers Exchange

Bind using headers

Only matching headers are queued

14

Queue with Fanout Exchange

Bind to fanout exchange

All messages are received

15

Queue with Direct Exchange

Bind to direct exchange

Only exact match messages are queued

16

Queue with Exclusive Flag

Declare exclusive queue

Only one connection allowed

17

Queue with Auto-Delete

Declare auto-delete queue

Queue is deleted after last consumer disconnects

18

Queue with Lazy Mode

Enable lazy queue

Messages are stored on disk

19

Queue with Quorum Type

Use quorum queue

Messages are replicated

20

Queue with Classic Type

Use classic queue

Standard queue behavior

21

Queue with Mirroring

Enable mirrored queue

Messages are replicated across nodes

22

Queue with Flow Control

Simulate slow consumer

Broker applies backpressure

23

Queue with Message Grouping

Use message group ID

Messages are grouped

24

Queue with Consumer Priority

Set consumer priority

Higher priority consumer gets messages

25

Queue with Delayed Messages

Use delayed exchange

Messages are delayed

26

Queue with Message Filtering

Use selectors or headers

Only matching messages are queued

27

Queue with Message Compression

Send compressed message

Message is decompressed on receive

28

Queue with Binary Payload

Send binary data

Data is received intact

29

Queue with JSON Payload

Send JSON message

JSON is parsed correctly

30

Queue with XML Payload

Send XML message

XML is parsed correctly

31

Queue with Large Payload

Send 10MB message

Message is queued and delivered

32

Queue with Small Payload

Send 1-byte message

Message is queued and delivered

33

Queue with High Throughput

Send 10K messages

All messages are queued and delivered

34

Queue with Low Latency

Measure delivery time

Latency is within acceptable range

35

Queue with Network Partition

Simulate partition

Messages are queued and synced later

36

Queue with Broker Restart

Restart broker

Persistent queue retains messages

37

Queue with Consumer Crash

Crash consumer mid-processing

Message is redelivered

38

Queue with Producer Crash

Crash producer mid-send

Message is not queued

39

Queue with Message Redelivery

Reject message

Message is requeued

40

Queue with Message Acknowledgment

Ack message

Message is removed from queue

41

Queue with Negative Acknowledgment

Nack message

Message is requeued or dead-lettered

42

Queue with Transaction

Send in transaction

Message is queued on commit

43

Queue with Publisher Confirm

Enable confirms

Publisher receives ack

44

Queue with SASL Auth

Authenticate client

Queue access is granted

45

Queue with TLS

Secure connection

Message is encrypted in transit

46

Queue with IPv6

Connect using IPv6

Queue is accessible

47

Queue with NAT

Connect behind NAT

Queue is accessible

48

Queue with VPN

Connect over VPN

Queue is accessible

49

Queue with Monitoring

Enable metrics

Queue stats are visible

50

Queue with Logging

Enable logging

Queue operations are logged

Routing Flexibility - Testcases

#

Test Case

Description

Expected Result

1

Direct Exchange - Exact Match

Bind queue with routing key info, send with info

Message is routed to queue

2

Direct Exchange - No Match

Send with unmatched key

Message is dropped

3

Direct Exchange - Multiple Queues

Bind multiple queues with same key

All queues receive message

4

Topic Exchange - Single-Level Wildcard

Bind with logs.*, send logs.info

Message is routed

5

Topic Exchange - Multi-Level Wildcard

Bind with logs.#, send logs.info.debug

Message is routed

6

Topic Exchange - No Match

Bind with metrics.*, send logs.info

Message is dropped

7

Fanout Exchange - Multiple Queues

Bind multiple queues

All queues receive message

8

Fanout Exchange - No Queues Bound

Send message

Message is dropped

9

Headers Exchange - Match All

Bind with x-match=all, send matching headers

Message is routed

10

Headers Exchange - Match Any

Bind with x-match=any, send partial match

Message is routed

11

Headers Exchange - No Match

Send with non-matching headers

Message is dropped

12

Direct Exchange - Durable Queue

Use durable queue

Message persists after restart

13

Topic Exchange - Auto-Delete Queue

Use auto-delete queue

Queue removed after disconnect

14

Fanout Exchange - Exclusive Queue

Use exclusive queue

Only one consumer allowed

15

Headers Exchange - Case Sensitivity

Use case-sensitive headers

Match is case-sensitive

16

Direct Exchange - Delayed Message

Use delayed plugin

Message routed after delay

17

Topic Exchange - Delayed Message

Use delay with wildcard

Message routed after delay

18

Fanout Exchange - Delayed Message

Send delayed message

All queues receive delayed message

19

Headers Exchange - Delayed Message

Send delayed message with matching headers

Message routed after delay

20

Direct Exchange - TTL Expiry

Message expires before routing

Message is dropped

21

Topic Exchange - TTL Expiry

Message expires before match

Message is dropped

22

Fanout Exchange - TTL Expiry

Message expires before delivery

Message is dropped

23

Headers Exchange - TTL Expiry

Message expires before match

Message is dropped

24

Direct Exchange - Dead Letter Routing

Unroutable message sent to DLX

Message is routed to DLX

25

Topic Exchange - Dead Letter Routing

Unmatched message sent to DLX

Message is routed to DLX

26

Fanout Exchange - Dead Letter Routing

No queues bound, message to DLX

Message is routed to DLX

27

Headers Exchange - Dead Letter Routing

No match, message to DLX

Message is routed to DLX

28

Direct Exchange - Alternate Exchange

Use AE for unroutable messages

Message is routed to alternate exchange

29

Topic Exchange - Alternate Exchange

Unmatched message routed to AE

Message is routed to alternate exchange

30

Fanout Exchange - Alternate Exchange

No queues bound, message to AE

Message is routed to alternate exchange

31

Headers Exchange - Alternate Exchange

No match, message to AE

Message is routed to alternate exchange

32

Direct Exchange - Message Priority

Send high and low priority messages

Higher priority routed first

33

Topic Exchange - Message Priority

Send messages with priority

Priority respected in routing

34

Fanout Exchange - Message Priority

Send prioritized messages

All queues receive with priority

35

Headers Exchange - Message Priority

Send prioritized message with headers

Priority respected if headers match

36

Direct Exchange - Persistent Message

Send persistent message

Message survives broker restart

37

Topic Exchange - Persistent Message

Send persistent message

Message survives broker restart

38

Fanout Exchange - Persistent Message

Send persistent message

Message survives broker restart

39

Headers Exchange - Persistent Message

Send persistent message with headers

Message survives broker restart

40

Direct Exchange - Confirm Enabled

Enable publisher confirms

Publisher receives confirm

41

Topic Exchange - Confirm Enabled

Enable publisher confirms

Publisher receives confirm

42

Fanout Exchange - Confirm Enabled

Enable publisher confirms

Publisher receives confirm

43

Headers Exchange - Confirm Enabled

Enable publisher confirms

Publisher receives confirm

44

Routing with Network Partition

Simulate network split

Messages queued and routed after recovery

45

Routing with Broker Restart

Restart broker during routing

Routing resumes correctly

46

Routing with Clustered Brokers

Use clustered broker setup

Messages routed across cluster

47

Routing with Federation

Use federated brokers

Message routed across federated brokers

48

Routing with Load Balancer

Use load balancer in front of brokers

Message routed to correct broker

49

Routing with NAT

Connect behind NAT

Message is routed successfully

50

Routing with VPN

Connect over VPN

Message is routed successfully

Transactional - Testcases

#

Test Case

Description

Expected Result

1

Begin Transaction

Start a transaction session

Transaction context is created

2

Commit Transaction

Commit after publishing message

Message is delivered

3

Rollback Transaction

Rollback after publishing message

Message is not delivered

4

Publish Multiple Messages in Transaction

Send multiple messages before commit

All messages delivered on commit

5

Publish and Rollback

Send messages and rollback

No messages are delivered

6

Consume and Acknowledge in Transaction

Consume and ack message in transaction

Ack is committed

7

Consume and Rollback

Consume message and rollback

Message is redelivered

8

Mixed Publish and Consume

Publish and consume in same transaction

All operations are atomic

9

Nested Transactions

Attempt nested transaction

Error or unsupported operation

10

Transaction Timeout

Let transaction expire

Transaction is rolled back

11

Transaction with Persistent Messages

Publish persistent messages

Messages survive broker restart after commit

12

Transaction with Non-Persistent Messages

Publish non-persistent messages

Messages lost on broker restart

13

Transaction with Durable Queue

Use durable queue

Messages retained after commit

14

Transaction with Auto-Delete Queue

Use auto-delete queue

Queue deleted after disconnect

15

Transaction with Fanout Exchange

Publish to fanout exchange

All bound queues receive message on commit

16

Transaction with Topic Exchange

Publish with topic routing

Routed on commit

17

Transaction with Direct Exchange

Publish with direct routing

Routed on commit

18

Transaction with Headers Exchange

Publish with headers

Routed on commit if headers match

19

Transaction with Confirm Enabled

Enable publisher confirms

Confirm received after commit

20

Transaction with Message TTL

Message expires before commit

Message is dropped

21

Transaction with Delayed Message

Use delayed plugin

Message delivered after delay post-commit

22

Transaction with Dead Letter Exchange

Message rejected and committed

Routed to DLX

23

Transaction with Alternate Exchange

Unroutable message committed

Routed to AE

24

Transaction with Message Priority

Publish with priority

Priority respected after commit

25

Transaction with Large Payload

Publish large message

Delivered after commit

26

Transaction with Small Payload

Publish small message

Delivered after commit

27

Transaction with Binary Payload

Publish binary data

Delivered intact after commit

28

Transaction with JSON Payload

Publish JSON message

Delivered and parsed correctly

29

Transaction with XML Payload

Publish XML message

Delivered and parsed correctly

30

Transaction with Multiple Queues

Publish to multiple queues

All queues receive message on commit

31

Transaction with Multiple Exchanges

Publish to multiple exchanges

All routing occurs on commit

32

Transaction with Consumer Crash

Crash before commit

Transaction is rolled back

33

Transaction with Producer Crash

Crash before commit

Messages are not delivered

34

Transaction with Network Drop

Drop connection mid-transaction

Transaction is rolled back

35

Transaction with Broker Restart

Restart broker before commit

Transaction is lost

36

Transaction with Clustered Brokers

Use clustered setup

Transaction committed across nodes

37

Transaction with Federation

Use federated brokers

Transaction committed across brokers

38

Transaction with Load Balancer

Use load balancer

Transaction routed and committed

39

Transaction with NAT

Connect behind NAT

Transaction committed successfully

40

Transaction with VPN

Connect over VPN

Transaction committed successfully

41

Transaction with TLS

Use secure connection

Transaction committed securely

42

Transaction with SASL Auth

Authenticate client

Transaction committed securely

43

Transaction with Monitoring Enabled

Monitor transaction events

Events logged correctly

44

Transaction with Logging Enabled

Enable logging

Transaction operations logged

45

Transaction with Audit Trail

Enable audit trail

All steps recorded

46

Transaction with Message Replay

Replay committed message

Message redelivered correctly

47

Transaction with Message Filtering

Use selectors

Only matching messages committed

48

Transaction with Flow Control

Simulate slow consumer

Transaction waits for flow control

49

Transaction with Message Compression

Publish compressed message

Delivered and decompressed after commit

50

Transaction with Message Encryption

Publish encrypted message

Delivered securely after commit

Flow Control - Testcases

#

Test Case

Description

Expected Result

1

Basic Flow Control

Enable flow control

Broker throttles producer when needed

2

Producer Throttling

Send messages rapidly

Broker slows producer

3

Consumer Throttling

Slow consumer processing

Broker buffers messages

4

Prefetch Limit = 1

Set prefetch to 1

One message delivered at a time

5

Prefetch Limit = 10

Set prefetch to 10

Max 10 unacked messages

6

No Prefetch Limit

Remove prefetch

Consumer receives all messages

7

Flow Control with Large Payload

Send large messages

Broker applies backpressure

8

Flow Control with Small Payload

Send small messages

Flow control not triggered

9

Flow Control with High Throughput

Send 10K messages rapidly

Broker throttles producer

10

Flow Control with Low Throughput

Send slowly

No throttling occurs

11

Flow Control with Durable Queue

Use durable queue

Messages buffered safely

12

Flow Control with Auto-Delete Queue

Use auto-delete queue

Queue deleted after disconnect

13

Flow Control with Fanout Exchange

Multiple queues bound

All queues apply flow control

14

Flow Control with Topic Exchange

Use topic routing

Flow control applies per queue

15

Flow Control with Headers Exchange

Use headers routing

Flow control applies per queue

16

Flow Control with Direct Exchange

Use direct routing

Flow control applies per queue

17

Flow Control with Persistent Messages

Send persistent messages

Messages buffered on disk

18

Flow Control with Non-Persistent Messages

Send non-persistent messages

Messages may be dropped

19

Flow Control with TLS

Use secure connection

Flow control still applies

20

Flow Control with SASL Auth

Use authenticated client

Flow control enforced

21

Flow Control with VPN

Connect over VPN

Flow control enforced

22

Flow Control with NAT

Connect behind NAT

Flow control enforced

23

Flow Control with Load Balancer

Use load balancer

Flow control applies per connection

24

Flow Control with Clustered Brokers

Use cluster

Flow control coordinated across nodes

25

Flow Control with Federation

Use federated brokers

Flow control applies across links

26

Flow Control with Delayed Messages

Use delayed plugin

Messages delayed, not throttled

27

Flow Control with Message TTL

Messages expire in buffer

Expired messages dropped

28

Flow Control with Dead Letter Exchange

Overflowed messages routed to DLX

Messages preserved

29

Flow Control with Alternate Exchange

Unroutable messages go to AE

AE handles flow control

30

Flow Control with Message Priority

High priority messages delivered first

Lower priority delayed

31

Flow Control with Binary Payload

Send binary data

Flow control applies

32

Flow Control with JSON Payload

Send JSON messages

Flow control applies

33

Flow Control with XML Payload

Send XML messages

Flow control applies

34

Flow Control with Message Compression

Send compressed messages

Flow control based on size

35

Flow Control with Message Encryption

Send encrypted messages

Flow control applies

36

Flow Control with Logging Enabled

Enable logging

Flow control events logged

37

Flow Control with Monitoring Enabled

Enable metrics

Flow control metrics visible

38

Flow Control with Audit Trail

Enable audit

Flow control actions recorded

39

Flow Control with Consumer Crash

Consumer crashes mid-stream

Messages buffered or redelivered

40

Flow Control with Producer Crash

Producer crashes mid-stream

Broker resumes flow control

41

Flow Control with Network Drop

Drop connection

Messages buffered or dropped

42

Flow Control with Broker Restart

Restart broker

Flow control resumes

43

Flow Control with Message Replay

Replay messages

Flow control applies

44

Flow Control with Message Filtering

Use selectors

Only matching messages throttled

45

Flow Control with Message Redelivery

Redeliver unacked messages

Flow control applies

46

Flow Control with High Latency

Simulate latency

Flow control compensates

47

Flow Control with Low Latency

Fast network

Flow control rarely triggered

48

Flow Control with Multiple Consumers

Competing consumers

Flow control per consumer

49

Flow Control with Multiple Producers

Multiple producers

Broker throttles individually

50

Flow Control with Mixed Workload

Mix of fast and slow consumers

Flow control balances load

Security - Testcases

#

Test Case

Description

Expected Result

1

Basic Authentication

Connect with valid username/password

Connection succeeds

2

Invalid Authentication

Connect with wrong credentials

Connection is denied

3

Missing Credentials

Connect without credentials

Connection is denied

4

TLS Connection

Connect using TLS

Connection is encrypted

5

TLS with Valid Certificate

Use valid server certificate

Connection succeeds

6

TLS with Expired Certificate

Use expired certificate

Connection is rejected

7

TLS with Self-Signed Certificate

Use self-signed cert without trust

Connection is rejected

8

TLS with Trusted Self-Signed Certificate

Trust self-signed cert

Connection succeeds

9

TLS with Client Certificate

Use mutual TLS

Connection succeeds

10

TLS with Invalid Client Certificate

Use invalid client cert

Connection is denied

11

SASL PLAIN Authentication

Use SASL PLAIN mechanism

Auth succeeds with valid credentials

12

SASL EXTERNAL Authentication

Use client cert for auth

Auth succeeds with valid cert

13

SASL ANONYMOUS Authentication

Use anonymous login

Connection succeeds if allowed

14

SASL Mechanism Not Supported

Use unsupported mechanism

Connection is rejected

15

Role-Based Access Control

Assign roles to users

Access granted based on role

16

Unauthorized Publish

Try to publish to restricted exchange

Access is denied

17

Unauthorized Subscribe

Try to subscribe to restricted queue

Access is denied

18

Authorized Publish

Publish to allowed exchange

Message is accepted

19

Authorized Subscribe

Subscribe to allowed queue

Subscription succeeds

20

Access Control List (ACL) Enforcement

Apply ACL rules

Access allowed/denied as configured

21

Encrypted Message Payload

Encrypt message content

Payload is secure in transit

22

Encrypted Connection with TLS 1.2

Use TLS 1.2

Connection is secure

23

Encrypted Connection with TLS 1.3

Use TLS 1.3

Connection is secure

24

Weak Cipher Suite

Use deprecated cipher

Connection is rejected

25

Strong Cipher Suite

Use strong cipher

Connection is accepted

26

Password Expiry Policy

Use expired password

Login is denied

27

Password Complexity Enforcement

Use weak password

Password is rejected

28

Brute Force Login Attempt

Multiple failed logins

Account is locked or throttled

29

Session Timeout

Idle session expires

Connection is closed

30

IP Whitelisting

Connect from allowed IP

Connection succeeds

31

IP Blacklisting

Connect from blocked IP

Connection is denied

32

Audit Logging Enabled

Enable security logs

All events are logged

33

Unauthorized Access Logging

Attempt unauthorized action

Event is logged

34

Secure Management Interface

Access web UI over HTTPS

Interface is encrypted

35

Insecure Management Interface

Access web UI over HTTP

Access is denied or redirected

36

Secure AMQP Port

Use secure port (e.g., 5671)

Connection is encrypted

37

Insecure AMQP Port

Use insecure port (e.g., 5672)

Connection allowed only if permitted

38

Certificate Revocation Check

Use revoked cert

Connection is denied

39

Certificate Pinning

Pin server cert

Connection fails if cert mismatches

40

Multi-Factor Authentication

Require MFA for login

Access granted after verification

41

Security Policy Enforcement

Apply org-wide policy

All connections comply

42

Secure Federation Link

Use TLS for broker federation

Link is encrypted

43

Secure Cluster Communication

Use TLS between cluster nodes

Communication is encrypted

44

Secure Plugin Integration

Use secure plugins

No vulnerabilities introduced

45

Secure Logging Configuration

Mask sensitive data in logs

Logs do not expose credentials

46

Secure Backup and Restore

Encrypt backup files

Data is protected

47

Secure Message Replay

Replay encrypted messages

Messages remain secure

48

Secure Dead Letter Handling

DLX messages are encrypted

Data remains protected

49

Secure Monitoring Tools

Use TLS for monitoring APIs

Metrics are securely transmitted

50

Security Patch Verification

Apply latest security updates

Known vulnerabilities are mitigated

Multi-Channel Communication - Testcases

#

Test Case

Description

Expected Result

1

Open Single Channel

Open one channel on a connection

Channel is created successfully

2

Open Multiple Channels

Open multiple channels

All channels are created

3

Max Channel Limit

Open channels up to broker limit

All channels created until limit

4

Exceed Channel Limit

Try to open beyond limit

Error or rejection occurs

5

Publish on Multiple Channels

Send messages on different channels

All messages are delivered

6

Consume on Multiple Channels

Consume from different queues

All consumers receive messages

7

Channel Isolation

Use separate channels for pub/sub

Operations do not interfere

8

Channel Closure

Close one channel

Other channels remain active

9

Connection Closure

Close connection

All channels are closed

10

Channel Reuse

Reuse closed channel ID

Channel is re-created successfully

11

Channel with Transactions

Use transaction on one channel

Transaction is isolated

12

Channel with Flow Control

Apply flow control on one channel

Other channels unaffected

13

Channel with TLS

Use secure connection

Channels operate securely

14

Channel with SASL Auth

Authenticate connection

Channels inherit security context

15

Channel with Publisher Confirms

Enable confirms on one channel

Confirm received per channel

16

Channel with QoS Settings

Set QoS per channel

Settings apply independently

17

Channel with Prefetch Limit

Set different limits per channel

Limits respected per channel

18

Channel with Durable Queue

Declare queue on one channel

Queue persists

19

Channel with Auto-Delete Queue

Declare auto-delete queue

Queue deleted after disconnect

20

Channel with Fanout Exchange

Bind queues via channel

All queues receive messages

21

Channel with Topic Exchange

Use topic routing

Messages routed correctly

22

Channel with Headers Exchange

Use headers routing

Messages routed correctly

23

Channel with Direct Exchange

Use direct routing

Messages routed correctly

24

Channel with Dead Letter Exchange

Route failed messages

DLX works per channel

25

Channel with Alternate Exchange

Use AE for unroutable messages

AE handles routing

26

Channel with Delayed Messages

Use delay plugin

Messages delayed per channel

27

Channel with Message TTL

Set TTL on messages

TTL respected per channel

28

Channel with Message Priority

Send priority messages

Priority respected per channel

29

Channel with Binary Payload

Send binary data

Data delivered correctly

30

Channel with JSON Payload

Send JSON messages

Data parsed correctly

31

Channel with XML Payload

Send XML messages

Data parsed correctly

32

Channel with Compression

Send compressed messages

Data decompressed correctly

33

Channel with Encryption

Send encrypted messages

Data decrypted correctly

34

Channel with Logging Enabled

Enable logging

Channel operations logged

35

Channel with Monitoring Enabled

Enable metrics

Channel stats visible

36

Channel with Audit Trail

Enable audit

Channel actions recorded

37

Channel with Consumer Crash

Crash consumer on one channel

Other channels unaffected

38

Channel with Producer Crash

Crash producer on one channel

Other channels unaffected

39

Channel with Network Drop

Drop connection temporarily

Channels reconnect or fail gracefully

40

Channel with Broker Restart

Restart broker

Channels re-established

41

Channel with Clustered Brokers

Use cluster

Channels operate across nodes

42

Channel with Federation

Use federated brokers

Channels operate across brokers

43

Channel with Load Balancer

Use load balancer

Channels routed correctly

44

Channel with NAT

Connect behind NAT

Channels operate normally

45

Channel with VPN

Connect over VPN

Channels operate securely

46

Channel with Message Replay

Replay messages on channel

Messages redelivered correctly

47

Channel with Message Filtering

Use selectors

Only matching messages delivered

48

Channel with Redelivery

Redeliver unacked messages

Redelivery handled per channel

49

Channel with High Latency

Simulate latency

Channels adapt independently

50

Channel with Mixed Workload

Use channels for different tasks

All tasks handled concurrently

Publisher Confirms - Testcases

#

Test Case

Description

Expected Result

1

Enable Publisher Confirms

Activate confirm mode

Broker sends ack for each message

2

Basic Confirm Receipt

Publish message

Publisher receives ack

3

Confirm with Persistent Message

Send persistent message

Confirm received after disk write

4

Confirm with Non-Persistent Message

Send non-persistent message

Confirm received after memory write

5

Confirm with Multiple Messages

Publish batch of messages

Confirms received for all

6

Confirm with Delayed Message

Use delayed plugin

Confirm received after delay

7

Confirm with Large Payload

Send large message

Confirm received after full delivery

8

Confirm with Small Payload

Send 1-byte message

Confirm received quickly

9

Confirm with Fanout Exchange

Publish to fanout

Confirm received after routing

10

Confirm with Topic Exchange

Publish with topic key

Confirm received after routing

11

Confirm with Direct Exchange

Publish with direct key

Confirm received after routing

12

Confirm with Headers Exchange

Publish with headers

Confirm received after match

13

Confirm with No Queue Bound

Publish to empty exchange

Confirm still received

14

Confirm with Unroutable Message

Message not routed

Confirm received if mandatory = false

15

Confirm with Mandatory Flag

Set mandatory = true

Negative ack if unroutable

16

Confirm with Immediate Flag

Set immediate = true

Negative ack if no consumer

17

Confirm with TLS

Use secure connection

Confirm received securely

18

Confirm with SASL Auth

Use authenticated session

Confirm received

19

Confirm with VPN

Connect over VPN

Confirm received

20

Confirm with NAT

Connect behind NAT

Confirm received

21

Confirm with Load Balancer

Use load balancer

Confirm received

22

Confirm with Clustered Broker

Use cluster

Confirm received from correct node

23

Confirm with Federation

Use federated brokers

Confirm received after remote delivery

24

Confirm with Broker Restart

Restart broker mid-publish

Confirm not received

25

Confirm with Network Drop

Drop connection mid-publish

Confirm not received

26

Confirm with Consumer Crash

Consumer crashes

Confirm still received if message routed

27

Confirm with Publisher Crash

Publisher crashes before confirm

No confirm received

28

Confirm with Message TTL

Message expires before delivery

Confirm still received

29

Confirm with Dead Letter Routing

Message routed to DLX

Confirm received

30

Confirm with Alternate Exchange

Message routed to AE

Confirm received

31

Confirm with Message Priority

Send high-priority message

Confirm received

32

Confirm with Message Compression

Send compressed message

Confirm received

33

Confirm with Message Encryption

Send encrypted message

Confirm received

34

Confirm with Binary Payload

Send binary data

Confirm received

35

Confirm with JSON Payload

Send JSON message

Confirm received

36

Confirm with XML Payload

Send XML message

Confirm received

37

Confirm with Logging Enabled

Enable logging

Confirm event logged

38

Confirm with Monitoring Enabled

Enable metrics

Confirm metrics visible

39

Confirm with Audit Trail

Enable audit

Confirm recorded

40

Confirm with High Throughput

Send 10K messages

All confirms received

41

Confirm with Low Throughput

Send slowly

Confirms received per message

42

Confirm with Transaction Commit

Publish in transaction

Confirm received after commit

43

Confirm with Transaction Rollback

Rollback transaction

No confirm received

44

Confirm with Publisher Retry

Retry on no confirm

Message resent until confirmed

45

Confirm with Timeout

Wait for confirm timeout

Timeout error raised

46

Confirm with Negative Acknowledgment

Broker sends nack

Publisher handles failure

47

Confirm with Multiple Channels

Use multiple channels

Confirms received per channel

48

Confirm with Multiple Connections

Use multiple connections

Confirms received independently

49

Confirm with Message Replay

Replay message

Confirm received again

50

Confirm with Broker Overload

Simulate high load

Confirms delayed but received

Extensibility - Testcases

#

Test Case

Description

Expected Result

1

Plugin Integration

Load custom plugin

Plugin loads without error

2

Custom Exchange Type

Define new exchange type

Exchange is created and usable

3

Custom Queue Behavior

Extend queue with plugin

Queue behaves as defined

4

Custom Routing Logic

Implement custom routing

Messages routed per logic

5

Add New SASL Mechanism

Add custom auth method

Auth succeeds using new method

6

Add New Message Format

Support new payload format

Message is parsed and routed

7

Extend Management API

Add new API endpoint

API responds correctly

8

Extend Monitoring Tools

Add custom metrics

Metrics are collected and displayed

9

Add New Protocol Binding

Support AMQP over WebSocket

Messages transmitted successfully

10

Add REST Gateway

Bridge AMQP with REST

REST calls produce AMQP messages

11

Add MQTT Bridge

Bridge AMQP with MQTT

Messages flow between protocols

12

Add Kafka Bridge

Bridge AMQP with Kafka

Messages flow between systems

13

Add Custom Headers

Use extended headers

Headers are preserved and routed

14

Add Custom Message Properties

Define new properties

Properties are retained

15

Extend Dead Letter Handling

Add custom DLX logic

Messages routed per new logic

16

Add Message Transformation Plugin

Modify message in transit

Message is transformed

17

Add Message Validation Plugin

Validate message schema

Invalid messages rejected

18

Add Message Encryption Plugin

Encrypt payloads

Messages decrypted by consumer

19

Add Message Compression Plugin

Compress payloads

Messages decompressed on receive

20

Add Custom Retry Policy

Define retry logic

Messages retried as configured

21

Add Custom Acknowledgment Mode

Define ack behavior

Messages acknowledged per logic

22

Add Custom Flow Control

Implement new flow control

Broker throttles as expected

23

Add Custom Transaction Logic

Extend transaction support

Transactions behave as defined

24

Add Custom Federation Logic

Modify federation behavior

Messages routed across brokers

25

Add Custom Clustering Logic

Extend cluster behavior

Nodes sync as expected

26

Add Custom Load Balancer Plugin

Modify routing strategy

Load is distributed correctly

27

Add Custom Security Policy

Enforce new rules

Unauthorized access blocked

28

Add Custom Authentication Backend

Use external auth system

Auth succeeds via backend

29

Add Custom Authorization Rules

Define fine-grained access

Access granted/denied correctly

30

Add Custom Logging Format

Modify log output

Logs follow new format

31

Add Custom Audit Trail

Track new events

Events are logged

32

Add Custom Alerting Plugin

Trigger alerts on events

Alerts sent as configured

33

Add Custom Scheduler

Schedule message delivery

Messages delivered on schedule

34

Add Custom Queue Type

Define new queue behavior

Queue operates as expected

35

Add Custom Exchange Binding

Extend binding logic

Messages routed correctly

36

Add Custom Message Expiry Logic

Modify TTL behavior

Messages expire per logic

37

Add Custom Message Replay Logic

Define replay rules

Messages replayed as expected

38

Add Custom Message Store

Use external DB for storage

Messages stored and retrieved

39

Add Custom Broker Plugin

Extend broker core

Broker runs with plugin

40

Add Custom Consumer Plugin

Extend consumer behavior

Consumer processes messages correctly

41

Add Custom Publisher Plugin

Extend publisher behavior

Publisher sends messages correctly

42

Add Custom Protocol Extension

Add new AMQP frame

Frame processed correctly

43

Add Custom Transport Layer

Use new transport (e.g., QUIC)

Messages transmitted successfully

44

Add Custom Metrics Exporter

Export to Prometheus, etc.

Metrics visible in external system

45

Add Custom Dashboard Widget

Extend UI

Widget displays correct data

46

Add Custom Quota Policy

Enforce message limits

Limits applied correctly

47

Add Custom Rate Limiter

Throttle per user

Rate limits enforced

48

Add Custom Message Filter

Drop/filter messages

Only valid messages routed

49

Add Custom Queue Selector

Route to queues based on logic

Messages routed correctly

50

Add Custom Broker Command

Extend CLI/API

Command executes successfully

  • Reference links