다음을 통해 공유


ServiceBusClient 클래스

ServiceBusClient 클래스는 ServiceBusSender 및 ServiceBusReceiver를 가져오기 위한 상위 수준 인터페이스를 정의합니다.

상속
builtins.object
ServiceBusClient

생성자

ServiceBusClient(fully_qualified_namespace: str, credential: AsyncTokenCredential | AzureSasCredential | AzureNamedKeyCredential, *, retry_total: int = 3, retry_backoff_factor: float = 0.8, retry_backoff_max: float = 120, retry_mode: str = 'exponential', **kwargs: Any)

매개 변수

fully_qualified_namespace
str
필수

Service Bus 네임스페이스의 정규화된 호스트 이름입니다. 네임스페이스 형식은 .servicebus.windows.net.

credential
AsyncTokenCredential 또는 AzureSasCredential 또는 AzureNamedKeyCredential
필수

토큰을 가져오기 위한 특정 인터페이스를 구현하는 인증에 사용되는 자격 증명 개체입니다. azure-identity 라이브러리에서 생성된 자격 증명 개체와 *get_token(자체, 범위) 메서드를 구현하는 개체를 허용하거나 AzureSasCredential도 제공할 수 있습니다.

logging_enable
bool

로거에 네트워크 추적 로그를 출력할지 여부입니다. 기본값은 False입니다.

transport_type
TransportType

Service Bus 서비스와 통신하는 데 사용할 전송 프로토콜의 유형입니다. 기본값은 TransportType.Amqp 이며 이 경우 포트 5671이 사용됩니다. 네트워크 환경에서 포트 5671을 사용할 수 없거나 차단된 경우 통신을 위해 포트 443을 사용하는 대신 TransportType.AmqpOverWebsocket 을 사용할 수 있습니다.

http_proxy
Dict

HTTP 프록시 설정. 'proxy_hostname'(str value) 및 'proxy_port'(int value) 키가 있는 사전이어야 합니다. 또한 'username', 'password' 키도 있을 수 있습니다.

user_agent
str

지정된 경우 기본 제공 사용자 에이전트 문자열 앞에 추가됩니다.

retry_total
int

오류가 발생할 때 실패한 작업을 다시 실행하려는 총 시도 횟수입니다. 기본값은 3입니다.

retry_backoff_factor
float

다시 시도 사이의 초 단위에서 델타 백오프 내부입니다. 기본값은 0.8입니다.

retry_backoff_max
float

초 단위의 최대 백오프 간격입니다. 기본값은 120입니다.

retry_mode
str

재시도 사이의 지연 동작입니다. 지원되는 값은 "고정" 또는 "지수"입니다. 여기서 기본값은 "지수"입니다.

custom_endpoint_address
str

Service Bus 서비스에 대한 연결을 설정하는 데 사용할 사용자 지정 엔드포인트 주소로, 호스트 환경에 필요한 애플리케이션 게이트웨이 또는 기타 경로를 통해 네트워크 요청을 라우팅할 수 있습니다. 기본값은 None입니다. 형식은 "sb://< custom_endpoint_hostname>:<custom_endpoint_port>"와 같습니다. 포트가 custom_endpoint_address 지정되지 않은 경우 기본적으로 포트 443이 사용됩니다.

connection_verify
str

연결 엔드포인트의 ID를 인증하는 데 사용되는 SSL 인증서의 사용자 지정 CA_BUNDLE 파일 경로입니다. 기본값은 None입니다. 이 경우 certifi.where() 가 사용됩니다.

uamqp_transport
bool

uamqp 라이브러리를 기본 전송으로 사용할지 여부입니다. 기본값은 False이고 Pure Python AMQP 라이브러리는 기본 전송으로 사용됩니다.

예제

ServiceBusClient의 새 instance 만듭니다.


   import os
   from azure.identity.aio import DefaultAzureCredential
   from azure.servicebus.aio import ServiceBusClient
   fully_qualified_namespace = os.environ['SERVICEBUS_FULLY_QUALIFIED_NAMESPACE']
   servicebus_client = ServiceBusClient(
       fully_qualified_namespace=fully_qualified_namespace,
       credential=DefaultAzureCredential()
   )

변수

fully_qualified_namespace
str

Service Bus 네임스페이스의 정규화된 호스트 이름입니다. 네임스페이스 형식은 .servicebus.windows.net.

메서드

close

ServiceBus 클라이언트를 닫습니다. 생성된 모든 보낸 사람, 수신자 및 기본 연결이 종료됩니다.

from_connection_string

연결 문자열에서 ServiceBusClient를 만듭니다.

get_queue_receiver

특정 큐에 대한 ServiceBusReceiver를 가져옵니다.

get_queue_sender

특정 큐에 대한 ServiceBusSender를 가져옵니다.

get_subscription_receiver

항목 아래의 특정 구독에 대한 ServiceBusReceiver를 가져옵니다.

get_topic_sender

특정 항목에 대한 ServiceBusSender를 가져옵니다.

close

ServiceBus 클라이언트를 닫습니다. 생성된 모든 보낸 사람, 수신자 및 기본 연결이 종료됩니다.

async close() -> None

반환

없음

from_connection_string

연결 문자열에서 ServiceBusClient를 만듭니다.

from_connection_string(conn_str: str, *, retry_total: int = 3, retry_backoff_factor: float = 0.8, retry_backoff_max: float = 120, retry_mode: str = 'exponential', **kwargs: Any) -> ServiceBusClient

매개 변수

conn_str
str
필수

Service Bus의 연결 문자열입니다.

logging_enable
bool

로거에 네트워크 추적 로그를 출력할지 여부입니다. 기본값은 False입니다.

transport_type
TransportType

Service Bus 서비스와 통신하는 데 사용할 전송 프로토콜의 유형입니다. 기본값은 TransportType.Amqp 이며 이 경우 포트 5671이 사용됩니다. 네트워크 환경에서 포트 5671을 사용할 수 없거나 차단된 경우 통신을 위해 포트 443을 사용하는 대신 TransportType.AmqpOverWebsocket 을 사용할 수 있습니다.

http_proxy
Dict

HTTP 프록시 설정. 'proxy_hostname'(str value) 및 'proxy_port'(int value) 키가 있는 사전이어야 합니다. 또한 'username', 'password' 키도 있을 수 있습니다.

user_agent
str

지정된 경우 기본 제공 사용자 에이전트 문자열 앞에 추가됩니다.

retry_total
int

오류가 발생할 때 실패한 작업을 다시 실행하려는 총 시도 횟수입니다. 기본값은 3입니다.

retry_backoff_factor
float

다시 시도 사이의 초 단위에서 델타 백오프 내부입니다. 기본값은 0.8입니다.

retry_backoff_max
float

초 단위의 최대 백오프 간격입니다. 기본값은 120입니다.

retry_mode
str

재시도 사이의 지연 동작입니다. 지원되는 값은 'fixed' 또는 'exponential'입니다. 여기서 기본값은 '지수'입니다.

custom_endpoint_address
str

Service Bus 서비스에 대한 연결을 설정하는 데 사용할 사용자 지정 엔드포인트 주소로, 호스트 환경에 필요한 애플리케이션 게이트웨이 또는 기타 경로를 통해 네트워크 요청을 라우팅할 수 있습니다. 기본값은 None입니다. 형식은 "sb://< custom_endpoint_hostname>:<custom_endpoint_port>"와 같습니다. 포트가 custom_endpoint_address 지정되지 않은 경우 기본적으로 포트 443이 사용됩니다.

connection_verify
str

연결 엔드포인트의 ID를 인증하는 데 사용되는 SSL 인증서의 사용자 지정 CA_BUNDLE 파일 경로입니다. 기본값은 None입니다. 이 경우 certifi.where() 가 사용됩니다.

uamqp_transport
bool

uamqp 라이브러리를 기본 전송으로 사용할지 여부입니다. 기본값은 False이고 Pure Python AMQP 라이브러리는 기본 전송으로 사용됩니다.

반환 형식

예제

연결 문자열에서 ServiceBusClient의 새 instance 만듭니다.


   import os
   from azure.servicebus.aio import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)

get_queue_receiver

특정 큐에 대한 ServiceBusReceiver를 가져옵니다.

get_queue_receiver(queue_name: str, *, session_id: str | ~typing.Literal[<ServiceBusSessionFilter.NEXT_AVAILABLE: 0>] | None = None, sub_queue: ~azure.servicebus._common.constants.ServiceBusSubQueue | str | None = None, receive_mode: ~azure.servicebus._common.constants.ServiceBusReceiveMode | str = ServiceBusReceiveMode.PEEK_LOCK, max_wait_time: float | None = None, auto_lock_renewer: ~azure.servicebus._common.auto_lock_renewer.AutoLockRenewer | None = None, prefetch_count: int = 0, **kwargs: ~typing.Any) -> ServiceBusReceiver

매개 변수

queue_name
str
필수

클라이언트가 연결하는 특정 Service Bus 큐의 경로입니다.

session_id
str 또는 <xref:azure.servicebus.NEXT_AVAILABLE_SESSION> 또는 None

받을 특정 세션입니다. 세션 큐에 대해 지정해야 합니다. 그렇지 않으면 None이어야 합니다. 사용 가능한 다음 세션에서 메시지를 받으려면 이를 ~azure.servicebus.NEXT_AVAILABLE_SESSION.

sub_queue
str 또는 ServiceBusSubQueue 또는 None

지정된 경우 이 수신기가 연결할 하위 큐입니다. 여기에는 DEAD_LETTER 및 TRANSFER_DEAD_LETTER 큐가 포함되며, 처리할 수 없는 수신자 또는 메시지로 배달할 수 없는 메시지가 포함됩니다. 기본값은 None입니다. 즉, 기본 큐에 연결합니다. ServiceBusSubQueue 열거형 또는 해당하는 문자열 값 "deadletter" 및 "transferdeadletter"에서 값을 할당할 수 있습니다.

receive_mode
Union[ServiceBusReceiveMode, str]

엔터티에서 메시지를 검색할 모드입니다. 두 가지 옵션은 PEEK_LOCK 및 RECEIVE_AND_DELETE. PEEK_LOCK 받은 메시지는 큐에서 제거되기 전에 지정된 잠금 기간 내에 해결되어야 합니다. RECEIVE_AND_DELETE 사용하여 받은 메시지는 큐에서 즉시 제거되며 클라이언트가 메시지를 처리하지 못하면 이후에 거부되거나 다시 수신될 수 없습니다. 기본 모드는 PEEK_LOCK.

max_wait_time
Optional[float]

수신자가 자동으로 수신을 중지하는 수신된 메시지 사이의 시간 제한(초)입니다. 기본값은 없음이며 시간 제한이 없음을 의미합니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 연결 시간 제한 값을 조정해야 할 수 있습니다. 자세한 내용은 socket_timeout 선택적 매개 변수를 참조하세요.

auto_lock_renewer
Optional[AutoLockRenewer]

수신 시 메시지가 자동으로 등록되도록 ~azure.servicebus.aio.AutoLockRenewer를 제공할 수 있습니다. 수신기가 세션 수신기인 경우 세션에 대신 적용됩니다.

prefetch_count
int

서비스에 대한 각 요청과 함께 캐시할 최대 메시지 수입니다. 이 설정은 고급 성능 튜닝에만 사용됩니다. 이 값을 늘리면 메시지 처리량 성능이 향상되지만 충분히 빠르게 처리되지 않은 경우 메시지가 캐시되는 동안 만료될 가능성이 높아집니다. 기본값은 0입니다. 즉, 메시지가 서비스에서 수신되고 한 번에 하나씩 처리됩니다. prefetch_count 0인 경우 ServiceBusReceiver.receive 는 서비스에 대한 요청 내에서 max_message_count 캐시하려고 시도합니다(제공된 경우).

client_identifier
str

수신기 instance 고유하게 식별하는 문자열 기반 식별자입니다. Service Bus는 오류의 상관 관계를 더 쉽게 위해 일부 오류 메시지와 연결합니다. 지정하지 않으면 고유 ID가 생성됩니다.

socket_timeout
float

연결의 기본 소켓이 시간이 초과되기 전에 데이터를 보내고 받을 때 대기해야 하는 시간(초)입니다. 기본값은 TransportType.Amqp의 경우 0.2이고 TransportType.AmqpOverWebsocket의 경우 1입니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 기본값보다 큰 를 전달해야 할 수 있습니다.

반환 형식

예제

ServiceBusClient에서 ServiceBusSender의 새 instance 만듭니다.


   import os
   from azure.servicebus.aio import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   queue_name = os.environ['SERVICEBUS_QUEUE_NAME']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   async with servicebus_client:
       queue_receiver = servicebus_client.get_queue_receiver(queue_name=queue_name)

get_queue_sender

특정 큐에 대한 ServiceBusSender를 가져옵니다.

get_queue_sender(queue_name: str, **kwargs: Any) -> ServiceBusSender

매개 변수

queue_name
str
필수

클라이언트가 연결하는 특정 Service Bus 큐의 경로입니다.

client_identifier
str

보낸 사람 instance 고유하게 식별하는 문자열 기반 식별자입니다. Service Bus는 오류의 상관 관계를 더 쉽게 위해 일부 오류 메시지와 연결합니다. 지정하지 않으면 고유 ID가 생성됩니다.

socket_timeout
float

연결의 기본 소켓이 시간이 초과되기 전에 데이터를 보내고 받을 때 대기해야 하는 시간(초)입니다. 기본값은 TransportType.Amqp의 경우 0.2이고 TransportType.AmqpOverWebsocket의 경우 1입니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 기본값보다 큰 를 전달해야 할 수 있습니다.

반환

큐 보낸 사람입니다.

반환 형식

예제

연결 문자열에서 ServiceBusClient의 새 instance 만듭니다.


   import os
   from azure.servicebus.aio import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   queue_name = os.environ['SERVICEBUS_QUEUE_NAME']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   async with servicebus_client:
       queue_sender = servicebus_client.get_queue_sender(queue_name=queue_name)

get_subscription_receiver

항목 아래의 특정 구독에 대한 ServiceBusReceiver를 가져옵니다.

get_subscription_receiver(topic_name: str, subscription_name: str, *, session_id: str | ~typing.Literal[<ServiceBusSessionFilter.NEXT_AVAILABLE: 0>] | None = None, sub_queue: ~azure.servicebus._common.constants.ServiceBusSubQueue | str | None = None, receive_mode: ~azure.servicebus._common.constants.ServiceBusReceiveMode | str = ServiceBusReceiveMode.PEEK_LOCK, max_wait_time: float | None = None, auto_lock_renewer: ~azure.servicebus._common.auto_lock_renewer.AutoLockRenewer | None = None, prefetch_count: int = 0, **kwargs: ~typing.Any) -> ServiceBusReceiver

매개 변수

topic_name
str
필수

클라이언트가 연결하는 특정 Service Bus 토픽의 이름입니다.

subscription_name
str
필수

지정된 Service Bus 토픽에 있는 특정 Service Bus 구독의 이름입니다.

session_id
str 또는 <xref:azure.servicebus.NEXT_AVAILABLE_SESSION> 또는 None

받을 특정 세션입니다. 세션 구독에 대해 지정해야 합니다. 그렇지 않으면 None이어야 합니다. 사용 가능한 다음 세션에서 메시지를 받으려면 이를 ~azure.servicebus.NEXT_AVAILABLE_SESSION.

sub_queue
str 또는 ServiceBusSubQueue 또는 None

지정된 경우 이 수신기가 연결할 하위 큐입니다. 여기에는 DEAD_LETTER 및 TRANSFER_DEAD_LETTER 큐가 포함되며, 처리할 수 없는 수신자 또는 메시지로 배달할 수 없는 메시지가 포함됩니다. 기본값은 None입니다. 즉, 기본 큐에 연결합니다. ServiceBusSubQueue 열거형 또는 해당하는 문자열 값 "deadletter" 및 "transferdeadletter"에서 값을 할당할 수 있습니다.

receive_mode
Union[ServiceBusReceiveMode, str]

엔터티에서 메시지를 검색할 모드입니다. 두 가지 옵션은 PEEK_LOCK 및 RECEIVE_AND_DELETE. PEEK_LOCK 받은 메시지는 구독에서 제거되기 전에 지정된 잠금 기간 내에 정정되어야 합니다. RECEIVE_AND_DELETE 받은 메시지는 구독에서 즉시 제거되며 클라이언트가 메시지를 처리하지 못하는 경우 이후에 거부되거나 다시 수신될 수 없습니다. 기본 모드는 PEEK_LOCK.

max_wait_time
Optional[float]

수신자가 자동으로 수신을 중지하는 수신된 메시지 사이의 시간 제한(초)입니다. 기본값은 없음이며 시간 제한이 없음을 의미합니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 연결 시간 제한 값을 조정해야 할 수 있습니다. 자세한 내용은 socket_timeout 선택적 매개 변수를 참조하세요.

auto_lock_renewer
Optional[AutoLockRenewer]

수신 시 메시지가 자동으로 등록되도록 ~azure.servicebus.aio.AutoLockRenewer를 제공할 수 있습니다. 수신기가 세션 수신기인 경우 세션에 대신 적용됩니다.

prefetch_count
int

서비스에 대한 각 요청과 함께 캐시할 최대 메시지 수입니다. 이 설정은 고급 성능 튜닝에만 사용됩니다. 이 값을 늘리면 메시지 처리량 성능이 향상되지만 충분히 빠르게 처리되지 않은 경우 메시지가 캐시되는 동안 만료될 가능성이 높아집니다. 기본값은 0입니다. 즉, 메시지가 서비스에서 수신되고 한 번에 하나씩 처리됩니다. prefetch_count 0인 경우 ServiceBusReceiver.receive 는 서비스에 대한 요청 내에서 max_message_count 캐시하려고 시도합니다(제공된 경우).

client_identifier
str

수신기 instance 고유하게 식별하는 문자열 기반 식별자입니다. Service Bus는 오류의 상관 관계를 더 쉽게 위해 일부 오류 메시지와 연결합니다. 지정하지 않으면 고유 ID가 생성됩니다.

socket_timeout
float

연결의 기본 소켓이 시간이 초과되기 전에 데이터를 보내고 받을 때 대기해야 하는 시간(초)입니다. 기본값은 TransportType.Amqp의 경우 0.2이고 TransportType.AmqpOverWebsocket의 경우 1입니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 기본값보다 큰 를 전달해야 할 수 있습니다.

반환 형식

예제

ServiceBusClient에서 ServiceBusReceiver의 새 instance 만듭니다.


   import os
   from azure.servicebus.aio import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   topic_name = os.environ["SERVICEBUS_TOPIC_NAME"]
   subscription_name = os.environ["SERVICEBUS_SUBSCRIPTION_NAME"]
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   async with servicebus_client:
       subscription_receiver = servicebus_client.get_subscription_receiver(
           topic_name=topic_name,
           subscription_name=subscription_name,
       )

get_topic_sender

특정 항목에 대한 ServiceBusSender를 가져옵니다.

get_topic_sender(topic_name: str, **kwargs: Any) -> ServiceBusSender

매개 변수

topic_name
str
필수

클라이언트가 연결하는 특정 Service Bus 토픽의 경로입니다.

client_identifier
str

보낸 사람 instance 고유하게 식별하는 문자열 기반 식별자입니다. Service Bus는 오류의 상관 관계를 더 쉽게 위해 일부 오류 메시지와 연결합니다. 지정하지 않으면 고유 ID가 생성됩니다.

socket_timeout
float

연결의 기본 소켓이 시간이 초과되기 전에 데이터를 보내고 받을 때 대기해야 하는 시간(초)입니다. 기본값은 TransportType.Amqp의 경우 0.2이고 TransportType.AmqpOverWebsocket의 경우 1입니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 기본값보다 큰 를 전달해야 할 수 있습니다.

반환

토픽 보낸 사람입니다.

반환 형식

예제

ServiceBusClient에서 ServiceBusSender의 새 instance 만듭니다.


   import os
   from azure.servicebus.aio import ServiceBusClient
   servicebus_connection_str = os.environ['SERVICEBUS_CONNECTION_STR']
   topic_name = os.environ['SERVICEBUS_TOPIC_NAME']
   servicebus_client = ServiceBusClient.from_connection_string(conn_str=servicebus_connection_str)
   async with servicebus_client:
       topic_sender = servicebus_client.get_topic_sender(topic_name=topic_name)