feat/#63 - add iterator instead of RabbitMQ callback
Unit test coverage / pytest (pull_request) Failing after 1m49s
Build and Publish Docker Image / build-and-push (push) Successful in 2m29s
Unit test coverage / pytest (push) Failing after 1m45s
/ build-and-push (push) Successful in 1m52s
CI for pypl publish / publish-lib (push) Successful in 1m44s

This commit is contained in:
Stanislav Hejny
2025-07-27 09:50:25 +01:00
parent 66132db13a
commit 07f6f4569c
11 changed files with 174 additions and 59 deletions
+19 -9
View File
@@ -1,4 +1,5 @@
import logging
from typing import Optional
import aio_pika
from aio_pika.abc import AbstractRobustExchange, AbstractRobustQueue
@@ -95,19 +96,25 @@ class RabbitMQClient:
route.queue if route.queue else self.router.get_consume_queue_name()
)
logging_info("RabbitMQClient register route: [%s]", route)
queue: AbstractRobustQueue = await self.channel.declare_queue(
name=queue_name,
durable=True,
exclusive=False,
auto_delete=False,
arguments=queue_args,
)
if self.amq_configuration.amq_adapter.callbacks_enabled:
queue: Optional[AbstractRobustQueue] = await self.channel.declare_queue(
name=queue_name,
durable=True,
exclusive=False,
auto_delete=False,
arguments=queue_args,
)
else:
queue = None
_exchange_name: str = route.exchange if route.exchange else AMQ_RPC_EXCHANGE
exchange: AbstractRobustExchange = await self.channel.declare_exchange(
name=_exchange_name, type=ExchangeType.topic
)
await queue.bind(exchange, route.key)
_c_tag = await queue.consume(callback, no_ack=False)
if self.amq_configuration.amq_adapter.callbacks_enabled:
await queue.bind(exchange, route.key)
_c_tag = await queue.consume(callback, no_ack=False)
else:
_c_tag = None
# Register the route with the router and publish its detail to other adapters
await self.router.register_route(
AMQRoute(
@@ -144,6 +151,9 @@ class RabbitMQClient:
Set up the RabbitMQ connection
:return: nothing, it applies changes to instance variables
"""
logging.info(
f"RabbitMQClient.setupAMQ, connecting to RabbitMQ at {self.amq_configuration.dispatch.amq_host}:{self.amq_configuration.dispatch.amq_port}, loop={loop}"
)
self.connection = await aio_pika.connect_robust(
host=self.amq_configuration.dispatch.amq_host,
port=self.amq_configuration.dispatch.amq_port,