1414from .adapters .ib_adapter import IBAdapter
1515from .processors import MessageProcessor
1616from .monitoring .metrics import Metrics
17+ from .logging import logger
1718
1819AdapterMap = {
1920 "alpaca" : AlpacaAdapter ,
@@ -51,7 +52,12 @@ def __post_init__(self) -> None:
5152 if adapter_cls is None :
5253 raise ValueError (f"Unknown provider: { name } " )
5354 adapter = adapter_cls (websocket_url = url )
54- self .websocket_manager .add_adapter (adapter )
55+ self .websocket_manager .add_adapter (
56+ adapter ,
57+ circuit_breaker_cfg = provider_cfg .get ("circuit_breaker" , {}),
58+ rate_limit_cfg = provider_cfg .get ("rate_limit" ),
59+ auth_method = provider_cfg .get ("auth_method" , "api_key" ),
60+ )
5561
5662 # Subscription API -------------------------------------------------
5763 def subscribe_to_trades (self , symbols : List [str ], callback : Callback ) -> None :
@@ -68,10 +74,14 @@ def subscribe_to_quotes(self, symbols: List[str], callback: Callback) -> None:
6874
6975 # Runtime ----------------------------------------------------------
7076 async def _dispatch (self , provider : str , message : Dict ) -> None :
71- self .metrics .increment ()
77+ symbol = message .get ("symbol" , "" )
78+ self .metrics .record_message (provider , symbol )
7279 processed = self .message_processor .process (message )
7380 await self .buffer .put (processed )
7481 msg_type = message .get ("type" , "trades" )
82+ logger .debug (
83+ "dispatch_message" , provider = provider , type = msg_type , symbol = symbol
84+ )
7585 for cb in self ._callbacks .get (msg_type , []):
7686 res = cb (processed )
7787 if asyncio .iscoroutine (res ):
0 commit comments