Skip to content

Commit efb57ab

Browse files
add rabbitmq client setup
1 parent ee0f739 commit efb57ab

File tree

4 files changed

+40
-0
lines changed

4 files changed

+40
-0
lines changed

services/docker-compose.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,6 +1127,11 @@ services:
11271127
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
11281128
POSTGRES_PORT: ${POSTGRES_PORT}
11291129
POSTGRES_USER: ${POSTGRES_USER}
1130+
RABBIT_SECURE: ${RABBIT_SECURE}
1131+
RABBIT_HOST: ${RABBIT_HOST}
1132+
RABBIT_PORT: ${RABBIT_PORT}
1133+
RABBIT_USER: ${RABBIT_USER}
1134+
RABBIT_PASSWORD: ${RABBIT_PASSWORD}
11301135
REDIS_HOST: ${REDIS_HOST}
11311136
REDIS_PORT: ${REDIS_PORT}
11321137
REDIS_SECURE: ${REDIS_SECURE}

services/storage/src/simcore_service_storage/application.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from .dsm import setup_dsm
2121
from .dsm_cleaner import setup_dsm_cleaner
2222
from .long_running_tasks import setup_rest_api_long_running_tasks
23+
from .rabbitmq import setup_rabbitmq
2324
from .redis import setup_redis
2425
from .rest import setup_rest
2526
from .s3 import setup_s3
@@ -58,6 +59,7 @@ def create(settings: Settings) -> web.Application:
5859
service_name=APP_NAME,
5960
)
6061

62+
setup_rabbitmq(app)
6163
setup_db(app)
6264
setup_s3(app)
6365

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from aiohttp import web
2+
from servicelib.rabbitmq._client import RabbitMQClient
3+
from servicelib.rabbitmq._utils import wait_till_rabbitmq_responsive
4+
5+
from .constants import APP_CONFIG_KEY
6+
from .settings import Settings
7+
8+
_APP_RABBITMQ_CLIENT_KEY = "APP_RABBITMQ_CLIENT_KEY"
9+
10+
11+
async def _rabbitmq_client(app: web.Application):
12+
app[_APP_RABBITMQ_CLIENT_KEY] = None
13+
settings: Settings = app[APP_CONFIG_KEY]
14+
assert settings.STORAGE_RABBITMQ # nosec
15+
rabbitmq_settings = settings.STORAGE_RABBITMQ
16+
17+
await wait_till_rabbitmq_responsive(f"{rabbitmq_settings.dsn}")
18+
19+
app[_APP_RABBITMQ_CLIENT_KEY] = RabbitMQClient("storage", rabbitmq_settings)
20+
21+
yield
22+
23+
await app[_APP_RABBITMQ_CLIENT_KEY].close()
24+
25+
26+
def setup_rabbitmq(app: web.Application):
27+
if _rabbitmq_client not in app.cleanup_ctx:
28+
app.cleanup_ctx.append(_rabbitmq_client)

services/storage/src/simcore_service_storage/settings.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from settings_library.base import BaseCustomSettings
1313
from settings_library.basic_types import LogLevel, PortInt
1414
from settings_library.postgres import PostgresSettings
15+
from settings_library.rabbit import RabbitSettings
1516
from settings_library.redis import RedisSettings
1617
from settings_library.s3 import S3Settings
1718
from settings_library.tracing import TracingSettings
@@ -46,6 +47,10 @@ class Settings(BaseCustomSettings, MixinLoggingSettings):
4647
None, description="Pennsieve API secret ONLY for testing purposes"
4748
)
4849

50+
STORAGE_RABBITMQ: RabbitSettings = Field(
51+
json_schema_extra={"auto_default_from_env": True}
52+
)
53+
4954
STORAGE_POSTGRES: PostgresSettings = Field(
5055
json_schema_extra={"auto_default_from_env": True}
5156
)

0 commit comments

Comments
 (0)