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).
Topics in this section,
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