EngineConfiguration_BusService
What it is
Configuration models and loaders for constructing a BusService with a selectable bus adapter (rabbitmq, python_queue, or custom). Uses Pydantic validation to enforce adapter-specific configuration rules.
Public API
class BusAdapterRabbitMQConfiguration(BaseModel)- Validates RabbitMQ adapter configuration.
- Fields:
rabbitmq_url: str(default:"amqp://abi:[email protected]:5672")
class BusAdapterPythonQueueConfiguration(BaseModel)- Validates Python queue adapter configuration (no fields; config may be empty).
class BusAdapterConfiguration(GenericLoader)- Selects and loads an
IBusAdapterimplementation based onadapter. - Fields:
adapter: Literal["rabbitmq", "python_queue", "custom"]config: dict | None(adapter-specific)
- Methods:
validate_adapter(self) -> BusAdapterConfiguration(Pydantic@model_validator)- Enforces:
configis required whenadapter != "custom".- RabbitMQ config must match
BusAdapterRabbitMQConfiguration. - Python queue adapter accepts no config; if provided, it must match
BusAdapterPythonQueueConfiguration.
- Enforces:
load(self) -> IBusAdapterrabbitmq: lazy-imports and returnsRabbitMQAdapter(**config)python_queue: lazy-imports and returnsPythonQueueAdapter()custom: delegates toGenericLoader.load()- otherwise raises
ValueError
- Selects and loads an
class BusServiceConfiguration(BaseModel)- Fields:
bus_adapter: BusAdapterConfiguration
- Methods:
load(self) -> BusService- Returns
BusService(adapter=self.bus_adapter.load())
- Returns
- Fields:
Configuration/Dependencies
- Depends on:
pydantic(BaseModel,ConfigDict,model_validator)naas_abi_core.engine.engine_configuration.EngineConfiguration_GenericLoader.GenericLoadernaas_abi_core.engine.engine_configuration.utils.PydanticModelValidator.pydantic_model_validatornaas_abi_core.services.bus.BusPorts.IBusAdapternaas_abi_core.services.bus.BusService.BusService
- Adapter implementations are imported lazily during
BusAdapterConfiguration.load():naas_abi_core.services.bus.adapters.secondary.RabbitMQAdapter.RabbitMQAdapternaas_abi_core.services.bus.adapters.secondary.PythonQueueAdapter.PythonQueueAdapter
Usage
from naas_abi_core.engine.engine_configuration.EngineConfiguration_BusService import (
BusServiceConfiguration, BusAdapterConfiguration
)
cfg = BusServiceConfiguration(
bus_adapter=BusAdapterConfiguration(
adapter="python_queue",
config={}, # optional; if provided must be valid (empty is allowed)
)
)
bus_service = cfg.load()RabbitMQ example:
from naas_abi_core.engine.engine_configuration.EngineConfiguration_BusService import (
BusServiceConfiguration, BusAdapterConfiguration
)
cfg = BusServiceConfiguration(
bus_adapter=BusAdapterConfiguration(
adapter="rabbitmq",
config={"rabbitmq_url": "amqp://abi:[email protected]:5672"},
)
)
bus_service = cfg.load()Caveats
configis required foradapter="rabbitmq"and generally required for all non-customadapters (per validator).- Extra keys in adapter configs are forbidden (
extra="forbid"); unknown fields will fail validation. adapter="custom"relies onGenericLoader.load()behavior (not defined in this file).