7373
7474PING_PROTO = PING_OP + _CRLF_
7575PONG_PROTO = PONG_OP + _CRLF_
76- INBOX_PREFIX = bytearray (b'_INBOX.' )
77- INBOX_PREFIX_LEN = len (INBOX_PREFIX ) + 22 + 1
76+ DEFAULT_INBOX_PREFIX = b'_INBOX'
7877
7978DEFAULT_PENDING_SIZE = 1024 * 1024
8079DEFAULT_BUFFER_SIZE = 32768
@@ -188,6 +187,7 @@ def __init__(self) -> None:
188187 self ._resp_map : Dict [str , asyncio .Future ] = {}
189188 self ._resp_sub_prefix : Optional [bytearray ] = None
190189 self ._nuid = NUID ()
190+ self ._inbox_prefix = bytearray (DEFAULT_INBOX_PREFIX )
191191
192192 # NKEYS support
193193 #
@@ -247,6 +247,7 @@ async def connect(
247247 user_jwt_cb : Optional [JWTCallback ] = None ,
248248 user_credentials : Optional [Credentials ] = None ,
249249 nkeys_seed : Optional [str ] = None ,
250+ inbox_prefix : Union [str , bytes ] = DEFAULT_INBOX_PREFIX ,
250251 ) -> None :
251252 """
252253 Establishes a connection to NATS.
@@ -347,6 +348,12 @@ async def subscribe_handler(msg):
347348 self ._reconnected_cb = reconnected_cb
348349 self ._disconnected_cb = disconnected_cb
349350
351+ # Custom inbox prefix
352+ if isinstance (inbox_prefix , str ):
353+ inbox_prefix = inbox_prefix .encode ()
354+ assert isinstance (inbox_prefix , bytes )
355+ self ._inbox_prefix = bytearray (inbox_prefix )
356+
350357 # NKEYS support
351358 self ._signature_cb = signature_cb
352359 self ._user_jwt_cb = user_jwt_cb
@@ -822,7 +829,8 @@ async def _send_subscribe(self, sub: Subscription) -> None:
822829 async def _init_request_sub (self ) -> None :
823830 self ._resp_map = {}
824831
825- self ._resp_sub_prefix = INBOX_PREFIX [:]
832+ self ._resp_sub_prefix = self ._inbox_prefix [:]
833+ self ._resp_sub_prefix .extend (b'.' )
826834 self ._resp_sub_prefix .extend (self ._nuid .next ())
827835 self ._resp_sub_prefix .extend (b'.' )
828836 resp_mux_subject = self ._resp_sub_prefix [:]
@@ -832,7 +840,7 @@ async def _init_request_sub(self) -> None:
832840 )
833841
834842 async def _request_sub_callback (self , msg : Msg ) -> None :
835- token = msg .subject [INBOX_PREFIX_LEN :]
843+ token = msg .subject [len ( self . _inbox_prefix ) + 22 + 2 :]
836844 try :
837845 fut = self ._resp_map .get (token )
838846 if not fut :
@@ -916,7 +924,8 @@ def new_inbox(self) -> str:
916924 nc.publish('broadcast', b'', reply=inbox)
917925 msg = sub.next_msg()
918926 """
919- next_inbox = INBOX_PREFIX [:]
927+ next_inbox = self ._inbox_prefix [:]
928+ next_inbox .extend (b'.' )
920929 next_inbox .extend (self ._nuid .next ())
921930 return next_inbox .decode ()
922931
0 commit comments