11from rabbitmq_amqp_python_client import (
2+ BindingSpecification ,
23 Connection ,
4+ ExchangeSpecification ,
5+ ExchangeType ,
36 Message ,
47 QuorumQueueSpecification ,
58 queue_address ,
1619from .utils import create_connection
1720
1821
19- def test_consumer_sync_queue_ack (connection : Connection ) -> None :
22+ def test_consumer_sync_queue_accept (connection : Connection ) -> None :
2023
21- queue_name = "test-queue-ack "
24+ queue_name = "test-queue-sync-accept "
2225 messages_to_send = 100
2326 management = connection .management ()
2427
@@ -31,21 +34,22 @@ def test_consumer_sync_queue_ack(connection: Connection) -> None:
3134
3235 consumed = 0
3336
34- # publish 10 messages
37+ # publish messages_to_send messages
3538 for i in range (messages_to_send ):
3639 publisher .publish (Message (body = "test" + str (i )))
3740
41+ publisher .close ()
42+
3843 # consumer synchronously without handler
3944 for i in range (messages_to_send ):
4045 message = consumer .consume ()
4146 if message .body == "test" + str (i ):
4247 consumed = consumed + 1
4348
44- assert consumed > 0
45-
46- publisher .close ()
4749 consumer .close ()
4850
51+ assert consumed > 0
52+
4953 management .delete_queue (queue_name )
5054 management .close ()
5155
@@ -91,11 +95,11 @@ def test_consumer_async_queue_accept(connection: Connection) -> None:
9195 assert message_count == 0
9296
9397
94- def test_consumer_async_queue_noack (connection : Connection ) -> None :
98+ def test_consumer_async_queue_no_ack (connection : Connection ) -> None :
9599
96100 messages_to_send = 1000
97101
98- queue_name = "test-queue_async_noack "
102+ queue_name = "test-queue_async_no_ack "
99103
100104 management = connection .management ()
101105
@@ -136,11 +140,37 @@ def test_consumer_async_queue_noack(connection: Connection) -> None:
136140def test_consumer_async_queue_with_discard (connection : Connection ) -> None :
137141 messages_to_send = 1000
138142
143+ exchange_dead_lettering = "exchange-dead-letter"
144+ queue_dead_lettering = "queue-dead-letter"
139145 queue_name = "test-queue_async_discard"
146+ binding_key = "key_dead_letter"
140147
141148 management = connection .management ()
142149
143- management .declare_queue (QuorumQueueSpecification (name = queue_name ))
150+ # configuring dead lettering
151+ management .declare_exchange (
152+ ExchangeSpecification (
153+ name = exchange_dead_lettering ,
154+ exchange_type = ExchangeType .fanout ,
155+ arguments = {},
156+ )
157+ )
158+ management .declare_queue (QuorumQueueSpecification (name = queue_dead_lettering ))
159+ management .bind (
160+ BindingSpecification (
161+ source_exchange = exchange_dead_lettering ,
162+ destination_queue = queue_dead_lettering ,
163+ binding_key = binding_key ,
164+ )
165+ )
166+
167+ management .declare_queue (
168+ QuorumQueueSpecification (
169+ name = queue_name ,
170+ dead_letter_exchange = exchange_dead_lettering ,
171+ dead_letter_routing_key = binding_key ,
172+ )
173+ )
144174
145175 addr_queue = queue_address (queue_name )
146176
@@ -171,9 +201,15 @@ def test_consumer_async_queue_with_discard(connection: Connection) -> None:
171201
172202 management .delete_queue (queue_name )
173203
204+ message_count_dead_lettering = management .purge_queue (queue_dead_lettering )
205+
206+ management .delete_queue (queue_dead_lettering )
207+
174208 management .close ()
175209
176210 assert message_count == 0
211+ # check dead letter queue
212+ assert message_count_dead_lettering == messages_to_send
177213
178214
179215def test_consumer_async_queue_with_requeue (connection : Connection ) -> None :
0 commit comments