11import logging
22from typing import Literal , Optional , Union , cast
33
4-
54from .amqp_consumer_handler import AMQPMessagingHandler
65from .entities import (
76 ConsumerOptions ,
@@ -41,7 +40,7 @@ class Consumer:
4140 def __init__ (
4241 self ,
4342 conn : BlockingConnection ,
44- addr : str ,
43+ addr : Optional [ str ] = None ,
4544 handler : Optional [AMQPMessagingHandler ] = None ,
4645 consumer_options : Optional [ConsumerOptions ] = None ,
4746 credit : Optional [int ] = None ,
@@ -70,34 +69,26 @@ def _open(self) -> None:
7069 logger .debug ("Creating Receiver" )
7170 self ._receiver = self ._create_receiver (self ._addr )
7271
73- def get_queue_address (self ) -> Optional [str ]:
74- """
75- Get the name of the queue from the address.
76-
77- Returns:
78- str: The name of the queue.
79- """
80- if self ._receiver is not None :
81- return cast (Optional [str ], self ._receiver .link .remote_source .address )
82- else :
83- raise Exception ("Receiver is not initialized" )
84-
8572 def _update_connection (self , conn : BlockingConnection ) -> None :
73+ addr = ""
74+ if self ._addr is not None :
75+ addr = self ._addr
76+
8677 self ._conn = conn
8778 if self ._consumer_options is None :
8879 logger .debug ("creating new receiver without stream" )
8980 self ._receiver = self ._conn .create_receiver (
90- self . _addr ,
91- options = ReceiverOptionUnsettled (self . _addr ),
81+ addr ,
82+ options = ReceiverOptionUnsettled (addr ),
9283 handler = self ._handler ,
9384 )
9485 else :
9586 logger .debug ("creating new stream receiver" )
9687 self ._consumer_options .offset (self ._handler .offset - 1 ) # type: ignore
9788 self ._receiver = self ._conn .create_receiver (
98- self . _addr ,
89+ addr ,
9990 options = ReceiverOptionUnsettledWithFilters (
100- self . _addr , self ._consumer_options
91+ addr , self ._consumer_options
10192 ),
10293 handler = self ._handler ,
10394 )
@@ -159,7 +150,7 @@ def stop(self) -> None:
159150 self ._receiver .container .stop_events ()
160151 self ._receiver .container .stop ()
161152
162- def _create_receiver (self , addr : str ) -> BlockingReceiver :
153+ def _create_receiver (self , addr : Optional [ str ] = None ) -> BlockingReceiver :
163154 credit = 100
164155 if self ._credit is not None :
165156 credit = self ._credit
@@ -182,7 +173,9 @@ def _create_receiver(self, addr: str) -> BlockingReceiver:
182173
183174 if isinstance (self ._consumer_options , DirectReplyToConsumerOptions ):
184175 logger .debug ("Creating dynamic receiver for direct reply-to" )
185- dynamic_receiver = self ._conn .create_dynamic_receiver (100 , handler = self ._handler )
176+ dynamic_receiver = self ._conn .create_dynamic_receiver (
177+ 100 , handler = self ._handler
178+ )
186179 dynamic_receiver .credit = credit
187180 return dynamic_receiver
188181
@@ -195,14 +188,16 @@ def _create_receiver(self, addr: str) -> BlockingReceiver:
195188 handler = self ._handler ,
196189 )
197190
198- raise AMQPError (
191+ raise Exception (
199192 "Receiver is not initialized. No valid consumer options provided."
200193 )
201194
202195 @property
203- def address (self ) -> str :
204- """Get the current publisher address."""
205- return self ._addr
196+ def address (self ) -> Optional [str ]:
197+ if self ._receiver is not None :
198+ return cast (Optional [str ], self ._receiver .link .remote_source .address )
199+ else :
200+ raise Exception ("Receiver is not initialized" )
206201
207202 @property
208203 def handler (self ) -> Optional [AMQPMessagingHandler ]:
0 commit comments