ServiceBusClient 클래스
ServiceBusClient 클래스는 ServiceBusSender 및 ServiceBusReceiver를 가져오기 위한 상위 수준 인터페이스를 정의합니다.
- 상속
-
builtins.objectServiceBusClient
생성자
ServiceBusClient(fully_qualified_namespace: str, credential: TokenCredential | 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
- TokenCredential 또는 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 import DefaultAzureCredential
from azure.servicebus 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 클라이언트를 닫습니다. 생성된 모든 보낸 사람, 수신자 및 기본 연결이 종료됩니다.
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
매개 변수
- 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.servicebus 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
매개 변수
- session_id
- str 또는 <xref:azure.servicebus.NEXT_AVAILABLE_SESSION>
받을 특정 세션입니다. 세션 큐에 대해 지정해야 합니다. 그렇지 않으면 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]
엔터티에서 메시지를 검색할 receive_mode. 두 가지 옵션은 PEEK_LOCK RECEIVE_AND_DELETE. PEEK_LOCK 받은 메시지는 큐에서 제거되기 전에 지정된 잠금 기간 내에 해결되어야 합니다. RECEIVE_AND_DELETE 받은 메시지는 큐에서 즉시 제거되며 클라이언트가 메시지를 처리하지 못하면 나중에 거부되거나 다시 수신될 수 없습니다. 기본 receive_mode PEEK_LOCK.
수신자가 자동으로 수신을 중지한 후 받은 메시지 사이의 시간 제한(초)입니다. 기본값은 없음입니다. 즉, 시간 제한이 없습니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 연결 시간 제한 값을 조정해야 할 수 있습니다. 자세한 내용은 socket_timeout 선택적 매개 변수를 참조하세요.
- auto_lock_renewer
- Optional[AutoLockRenewer]
수신 시 메시지가 자동으로 등록되도록 ~azure.servicebus.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 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)
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
매개 변수
- 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 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)
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
매개 변수
- session_id
- str 또는 <xref:azure.servicebus.NEXT_AVAILABLE_SESSION>
받을 특정 세션입니다. 세션 구독에 대해 지정해야 합니다. 그렇지 않으면 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]
엔터티에서 메시지를 검색할 receive_mode. 두 가지 옵션은 PEEK_LOCK 및 RECEIVE_AND_DELETE. PEEK_LOCK 받은 메시지는 구독에서 제거되기 전에 지정된 잠금 기간 내에 정정되어야 합니다. RECEIVE_AND_DELETE 받은 메시지는 구독에서 즉시 제거되며 클라이언트가 메시지를 처리하지 못하는 경우 이후에 거부되거나 다시 수신될 수 없습니다. 기본 receive_mode PEEK_LOCK.
수신자가 자동으로 수신을 중지하는 수신된 메시지 사이의 시간 제한(초)입니다. 기본값은 없음이며 시간 제한이 없음을 의미합니다. 쓰기 시간 초과로 인해 연결 오류가 발생하는 경우 연결 시간 제한 값을 조정해야 할 수 있습니다. 자세한 내용은 socket_timeout 선택적 매개 변수를 참조하세요.
- auto_lock_renewer
- Optional[AutoLockRenewer]
수신 시 메시지가 자동으로 등록되도록 ~azure.servicebus.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 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)
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
매개 변수
- 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 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)
with servicebus_client:
topic_sender = servicebus_client.get_topic_sender(topic_name=topic_name)