mirror of
https://github.com/zvx-echo6/central.git
synced 2026-05-21 18:14:44 +02:00
refactor(archive): use bootstrap_config for connection strings
Archive now reads NATS URL and Postgres DSN from bootstrap_config instead of TOML file. This is sufficient for archive since it only needs connection strings, not adapter configuration. No ConfigSource wiring needed - archive just consumes from JetStream. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
29fa49c5c2
commit
daa7852cc0
1 changed files with 353 additions and 342 deletions
|
|
@ -13,9 +13,8 @@ import nats
|
||||||
from nats.js import JetStreamContext
|
from nats.js import JetStreamContext
|
||||||
from nats.js.api import ConsumerConfig, DeliverPolicy, AckPolicy
|
from nats.js.api import ConsumerConfig, DeliverPolicy, AckPolicy
|
||||||
|
|
||||||
from central.config import load_config, Config
|
from central.bootstrap_config import get_settings
|
||||||
|
|
||||||
CONFIG_PATH = "/etc/central/central.toml"
|
|
||||||
CONSUMER_NAME = "archive"
|
CONSUMER_NAME = "archive"
|
||||||
STREAM_NAME = "CENTRAL_WX"
|
STREAM_NAME = "CENTRAL_WX"
|
||||||
SUBJECT_FILTER = "central.wx.>"
|
SUBJECT_FILTER = "central.wx.>"
|
||||||
|
|
@ -93,8 +92,9 @@ def _build_geom_sql(geo_data: dict[str, Any] | None) -> str | None:
|
||||||
class ArchiveConsumer:
|
class ArchiveConsumer:
|
||||||
"""Archive consumer process."""
|
"""Archive consumer process."""
|
||||||
|
|
||||||
def __init__(self, config: Config) -> None:
|
def __init__(self, nats_url: str, postgres_dsn: str) -> None:
|
||||||
self.config = config
|
self._nats_url = nats_url
|
||||||
|
self._postgres_dsn = postgres_dsn
|
||||||
self._nc: nats.NATS | None = None
|
self._nc: nats.NATS | None = None
|
||||||
self._js: JetStreamContext | None = None
|
self._js: JetStreamContext | None = None
|
||||||
self._pool: asyncpg.Pool | None = None
|
self._pool: asyncpg.Pool | None = None
|
||||||
|
|
@ -102,12 +102,12 @@ class ArchiveConsumer:
|
||||||
|
|
||||||
async def connect(self) -> None:
|
async def connect(self) -> None:
|
||||||
"""Connect to NATS and PostgreSQL."""
|
"""Connect to NATS and PostgreSQL."""
|
||||||
self._nc = await nats.connect(self.config.nats.url)
|
self._nc = await nats.connect(self._nats_url)
|
||||||
self._js = self._nc.jetstream()
|
self._js = self._nc.jetstream()
|
||||||
logger.info("Connected to NATS", extra={"url": self.config.nats.url})
|
logger.info("Connected to NATS", extra={"url": self._nats_url})
|
||||||
|
|
||||||
self._pool = await asyncpg.create_pool(
|
self._pool = await asyncpg.create_pool(
|
||||||
self.config.postgres.dsn,
|
self._postgres_dsn,
|
||||||
min_size=1,
|
min_size=1,
|
||||||
max_size=5,
|
max_size=5,
|
||||||
)
|
)
|
||||||
|
|
@ -303,8 +303,19 @@ async def async_main() -> None:
|
||||||
"""Async entry point."""
|
"""Async entry point."""
|
||||||
setup_logging()
|
setup_logging()
|
||||||
|
|
||||||
config = load_config(CONFIG_PATH)
|
settings = get_settings()
|
||||||
consumer = ArchiveConsumer(config)
|
logger.info(
|
||||||
|
"Archive starting",
|
||||||
|
extra={
|
||||||
|
"nats_url": settings.nats_url,
|
||||||
|
"config_source": settings.config_source,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
consumer = ArchiveConsumer(
|
||||||
|
nats_url=settings.nats_url,
|
||||||
|
postgres_dsn=settings.db_dsn,
|
||||||
|
)
|
||||||
|
|
||||||
loop = asyncio.get_running_loop()
|
loop = asyncio.get_running_loop()
|
||||||
shutdown_event = asyncio.Event()
|
shutdown_event = asyncio.Event()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue