Skip to content

Commit ddd8f73

Browse files
authored
Merge pull request #42 from WiZeYAR/master
2 parents 1c834a1 + 4e86e71 commit ddd8f73

File tree

2 files changed

+38
-7
lines changed

2 files changed

+38
-7
lines changed

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,26 @@ AioPikaBroker parameters:
135135
* `qos` - number of messages that worker can prefetch.
136136
* `declare_queues` - whether you want to declare queues even on
137137
client side. May be useful for message persistance.
138+
* `declare_queues_kwargs` - see [Custom Queue Arguments](#custom-queue-arguments) for more details.
139+
140+
## Custom Queue Arguments
141+
142+
You can pass custom arguments to the underlying RabbitMQ queue declaration by using the `declare_queues_kwargs` parameter of `AioPikaBroker`. If you want to set specific queue arguments (such as RabbitMQ extensions or custom behaviors), provide them in the `arguments` dictionary inside `declare_queues_kwargs`.
143+
144+
These arguments will be merged with the default arguments used by the broker (such as dead-lettering and priority settings).
145+
146+
**Example:**
147+
148+
```python
149+
broker = AioPikaBroker(
150+
declare_queues_kwargs={
151+
"arguments": {
152+
"x-message-ttl": 60000, # Set message TTL to 60 seconds
153+
"x-queue-type": "quorum", # Use quorum queue type
154+
}
155+
}
156+
)
157+
```
158+
159+
This will ensure that the queue is created with your custom arguments, in addition to the broker's defaults.
160+

taskiq_aio_pika/broker.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,16 +187,21 @@ async def declare_queues(
187187
self._dead_letter_queue_name,
188188
**self._declare_queues_kwargs,
189189
)
190-
args: "Dict[str, Any]" = {
190+
args: Dict[str, Any] = {
191191
"x-dead-letter-exchange": "",
192192
"x-dead-letter-routing-key": self._dead_letter_queue_name,
193193
}
194194
if self._max_priority is not None:
195195
args["x-max-priority"] = self._max_priority
196196
queue = await channel.declare_queue(
197197
self._queue_name,
198-
arguments=args,
199-
**self._declare_queues_kwargs,
198+
**{
199+
**self._declare_queues_kwargs,
200+
"arguments": {
201+
**self._declare_queues_kwargs.get("arguments", {}),
202+
**args,
203+
},
204+
},
200205
)
201206
if self._delayed_message_exchange_plugin:
202207
await queue.bind(
@@ -206,11 +211,14 @@ async def declare_queues(
206211
else:
207212
await channel.declare_queue(
208213
self._delay_queue_name,
209-
arguments={
210-
"x-dead-letter-exchange": "",
211-
"x-dead-letter-routing-key": self._queue_name,
214+
**{
215+
**self._declare_queues_kwargs,
216+
"arguments": {
217+
**self._declare_queues_kwargs.get("arguments", {}),
218+
"x-dead-letter-exchange": "",
219+
"x-dead-letter-routing-key": self._queue_name,
220+
},
212221
},
213-
**self._declare_queues_kwargs,
214222
)
215223

216224
await queue.bind(

0 commit comments

Comments
 (0)