Azure Service Bus - FAQ(질문과 대답)

이 문서는 Microsoft Azure Service Bus에 대한 일부 자주 묻는 질문에 대해 설명합니다. 또한 일반적인 Azure 가격 책정 및 지원 정보는 Azure 지원 FAQ에서 확인할 수 있습니다.

Azure Service Bus에 대한 일반적인 질문

Azure Service Bus란?

Azure Service Bus는 분리된 시스템 간에 데이터를 보낼 수 있도록 하는 비동기 메시지 클라우드 플랫폼입니다. Microsoft에서 이 기능을 서비스로 제공하므로 이를 사용하기 위해 고유한 하드웨어를 호스트할 필요는 없습니다.

Service Bus 네임스페이스란?

네임스페이스는 애플리케이션 내에서 Service Bus 리소스의 주소를 지정하기 위한 범위 컨테이너를 제공합니다. 네임스페이스를 만드는 작업은 Service Bus를 사용하는 데 필요하고 Service Bus를 시작하는 첫 번째 단계 중 하나입니다.

Azure Service Bus 큐란?

Service Bus 큐는 메시지가 저장되는 엔터티입니다. 큐는 서로 통신해야 하는 여러 애플리케이션 또는 분산된 애플리케이션의 여러 부분이 있는 경우에 유용합니다. 큐는 여러 제품(메시지)를 해당 위치에서 받고 보내는 배포 센터와 비슷합니다.

Azure Service Bus 토픽 및 구독이란?

토픽은 큐로 시각화할 수 있고 여러 구독을 사용하는 경우 더 풍부한 메시징 모델이 되며 기본적으로는 일대다 통신 도구입니다. 이 게시/구독 모델(또는 pub/sub)을 사용하면 여러 애플리케이션에서 받은 메시지를 여러 구독을 사용하여 토픽에 메시지를 전송하는 애플리케이션을 활성화합니다.

분할된 엔터티란?

일반적인 큐 또는 항목은 단일 메시지 broker에서 처리되며 하나의 메시징 저장소에 저장됩니다. 분할된 큐 또는 토픽은 여러 메시지 broker에 의해 처리되고 여러 메시징 저장소에 저장됩니다. 즉, 분할된 큐 또는 항목의 전체 처리량은 단일 메시지 broker 또는 메시징 저장소의 성능으로 제한되지 않습니다. 또한 메시징 스토어가 일시적으로 중단된 경우에도 분할된 큐 또는 항목을 계속 렌더링할 수 없습니다.

분할된 엔터티를 사용하는 경우 순서는 보장할 수 없습니다. 파티션을 사용할 수 없는 이벤트에서도 여전히 메세지를 보내고 다른 파티션에서 메시지를 수신할 수 있습니다.

Azure Service Bus는 데이터를 어디에 저장하나요?

Azure Service Bus 표준 계층은 백 엔드 스토리지 계층으로 Azure SQL Database를 활용합니다. 브라질 남부 및 동남 아시아를 제외한 모든 지역에서 데이터베이스 백업은 다른 지역 (일반적으로 Azure가 쌍으로 연결한 지역)에서 호스트됩니다. 브라질 남부 및 동남 아시아 지역에서는 해당 지역의 데이터 보존 요구 사항을 수용하기 위해 동일한 지역에 데이터베이스 백업이 저장됩니다.

Azure Service Bus 프리미엄 계층은 선택한 지역에 메타데이터 및 데이터를 저장합니다. Azure Service Bus 프리미엄 네임스페이스에 대해 지리적 재해 복구를 설정하는 경우 메타데이터는 선택한 보조 지역에 복사됩니다.

방화벽에서 열어야 하는 포트는 어느 것인가요?

Azure Service Bus에서 다음 프로토콜을 사용하여 메시지를 주고받을 수 있습니다.

  • AMQP(고급 메시지 큐 프로토콜) 1.0
  • TLS를 사용하는 HTTPS(Hypertext Transfer Protocol) 1.1

이러한 프로토콜을 사용하여 Azure Service Bus와 통신하기 위해 열어야 하는 아웃바운드 TCP 포트는 다음 표를 참조하세요.

프로토콜 Ports 세부 정보
AMQP 5671, 5672 TLS를 사용하는 AMQP. AMQP 프로토콜 가이드를 참조하세요.
HTTPS 443 이 포트는 HTTP/REST API 및 AMQP-over-WebSockets에 사용됩니다.

클라이언트 SDK에서 수행하는 여러 관리 작업 및 Microsoft Entra ID(사용되는 경우)에서의 토큰 획득은 HTTPS를 통해 일반적으로 실행되므로 AMQP가 5671 포트를 통해 사용되는 경우에도 HTTPS 포트가 아웃바운드 통신에 필요합니다.

공식 Azure SDK는 일반적으로 Service Bus에서 메시지를 보내고 받기 위해 AMQP 프로토콜을 사용합니다.

WebSocket을 통한 AMQP 프로토콜 옵션은 HTTP/REST API와 마찬가지로 포트 TCP 443을 통해 실행되지만 그렇지 않은 경우 일반 AMQP와 기능적으로 동일합니다. 이 옵션은 추가 핸드셰이크 왕복으로 인해 초기 연결 대기 시간이 더 길고, HTTPS 포트 공유에 대한 절충으로 약간 더 많은 오버헤드가 있습니다. 이 모드를 선택하는 경우 443 TCP 포트가 통신에 충분합니다. 다음 옵션을 사용하면 AMQP WebSockets 모드를 선택할 수 있습니다.

언어 옵션
.NET(Azure.Messaging.ServiceBus) ServiceBusClientOptions를 매개 변수로 사용하는 기여자를 사용하여 ServiceBusClient를 만듭니다. ServiceBusClientOptions.TransportTypeServiceBusTransportType.AmqpWebSockets로 설정합니다.
.NET(Microsoft.Azure.ServiceBus) 클라이언트 개체를 만들 때 TransportType, ServiceBusConnection 또는 ServiceBusConnectionStringBuilder를 매개 변수로 사용하는 기여자를 사용합니다.

transportType을 매개 변수로 사용하는 구성의 경우 매개 변수를 TransportType.AmqpWebSockets로 설정합니다.

ServiceBusConnection을 매개 변수로 사용하는 기여자의 경우 ServiceBusConnection.TransportTypeTransportType.AmqpWebSockets로 설정합니다.

ServiceBusConnectionStringBuilder를 사용하는 경우 transportType을 지정하는 옵션을 제공하는 기여자를 사용합니다.

Java(com.azure.messaging.servicebus) 클라이언트를 만들 때 ServiceBusClientBuilder.transportTypeAmqpTransportType.AMQP.AMQP_WEB_SOCKETS로 설정합니다.
Java(com.microsoft.azure.servicebus) 클라이언트를 만들 때 com.microsoft.azure.servicebus.ClientSettingstransportTypecom.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS로 설정합니다.
JavaScript Service Bus 클라이언트 개체를 만들 때 ServiceBusClientOptionswebSocketOptions 속성을 사용합니다.
Python Service Bus 클라이언트를 만들 때 ServiceBusClient.transport_typeTransportType.AmqpOverWebSocket으로 설정합니다.

2026년 9월 30일에 Azure SDK 지침을 따르지 않는 Azure Service Bus SDK 라이브러리 WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus 및 com.microsoft.azure.servicebus를 사용 중지합니다. 또한 SBMP 프로토콜에 대한 지원이 종료되므로 2026년 9월 30일 이후에는 더 이상 이 프로토콜을 사용할 수 없습니다. 해당 날짜 마이그레이션에 중요한 보안 업데이트와 개선된 기능을 제공하는 최신 Azure SDK 라이브러리로 마이그레이션합니다.

이전 라이브러리는 2026년 9월 30일 이후에도 계속 사용할 수 있지만 더 이상 Microsoft로부터 공식 지원 및 업데이트를 받을 수 없습니다. 자세한 내용은 사용 중지 공지 지원을 참조하세요.

Azure Service Bus는 JMS(Java Message Service)를 지원하나요?

예. 그렇습니다. 다음 문서를 참조하세요.

허용 목록에 추가해야 하는 IP 주소는 무엇인가요?

연결의 허용 목록에 추가할 적절한 IP 주소를 찾으려면 다음 단계를 수행합니다.

  1. 명령 프롬프트에서 다음 명령을 실행합니다.

    nslookup <YourNamespaceName>.servicebus.windows.net
    
  2. Non-authoritative answer에서 반환된 IP 주소를 적어 둡니다.

네임스페이스에 대해 영역 중복성을 사용하는 경우 몇 가지 추가 단계를 수행해야 합니다.

  1. 먼저 네임스페이스에서 nslookup을 실행합니다.

    nslookup <yournamespace>.servicebus.windows.net
    
  2. 신뢰할 수 없는 응답 섹션에서 다음 형식 중 하나로 표시되는 이름을 적어 둡니다.

    <name>-s1.cloudapp.net
    <name>-s2.cloudapp.net
    <name>-s3.cloudapp.net
    
  3. 접미사 s1, s2 및 s3를 포함하는 각 이름에 대해 nslookup을 실행하여 세 개의 가용성 영역에서 실행되는 세 인스턴스의 IP 주소를 모두 가져옵니다.

    참고 항목

    nslookup 명령에서 반환된 IP 주소는 고정 IP 주소가 아닙니다. 기본 배포를 삭제하거나 다른 클러스터로 이동할 때까지 기본 상수이지만 IN 주소를 사용하는 것은 권장되지 않거나 지원되지 않으며 IP 주소에 대한 변경 내용을 추적해야 합니다.

네임스페이스에서 메시지를 보내거나 받는 클라이언트의 IP 주소는 어디에서 찾을 수 있나요?

네임스페이스에서 메시지를 보내거나 받는 클라이언트의 IP 주소는 기록하지 않습니다. 모든 기존 클라이언트가 인증에 실패하고 Azure RBAC(Azure 역할 기반 액세스 제어) 설정을 검토하여 허용된 사용자나 애플리케이션만 네임스페이스에 액세스할 수 있도록 키를 다시 생성합니다.

프리미엄 네임스페이스를 사용하는 경우 IP 필터링, 가상 네트워크 서비스 엔드포인트프라이빗 엔드포인트를 사용하여 네임스페이스에 대한 액세스를 제한합니다.

모범 사례

일부 Azure Service Bus 모범 사례는 무엇인가요?

Service Bus를 사용한 성능 향상에 대한 모범 사례 참조 - 이 문서에서는 메시지를 교환할 때 성능을 최적화하는 방법을 설명합니다.

엔터티를 만들기 전에 무엇을 알아야 하나요?

큐 및 토픽에서 다음 속성을 변경할 수 없습니다. 새 대체 엔터티를 만들지 않으면 이러한 속성을 수정할 수 없으므로 엔터티를 만들 때 이 제한 사항을 고려합니다.

  • 분할
  • 세션
  • 중복 검색
  • Express 엔터티

가격 책정

이 섹션은 Service Bus 가격 책정 구조에 대한 일부 자주 묻는 질문을 답변합니다.

Service Bus 가격 및 대금 청구 문서에서는 Service Bus의 요금 청구 기준에 대해 설명합니다. Service Bus 가격 책정 옵션에 대한 특정 정보는 Service Bus 가격 책정 세부 정보를 참조하세요.

또한 일반적인 Azure 가격 책정 정보는 Azure 지원 FAQ에서 확인할 수 있습니다.

Service Bus 요금을 어떻게 청구하나요?

Service Bus 가격 책정에 대한 전체 내용은 Service Bus 가격 책정 세부 정보를 참조하세요. 언급된 가격 외에도 애플리케이션이 프로비전되는 데이터 센터의 외부에서 송신을 위해 연결된 데이터 전송에 요금이 부과됩니다.

Service Bus를 어떻게 사용하면 데이터가 전송의 대상이 되나요? 데이터가 전송되지 않는 사용 사례는 어떤 경우인가요?

지정된 Azure 지역 내에서 데이터 전송은 비용뿐만 아니라 인바운드 데이터 전송 없이 제공됩니다. 지역 외부의 데이터 전송은 여기에서 찾을 수 있는 송신 요금이 청구됩니다.

Service Bus는 스토리지에 대한 요금을 청구하나요?

아니요. Service Bus는 스토리지에 대한 요금을 청구하지 않습니다. 하지만 큐/항목 당 지속될 수 있는 데이터의 최대 크기를 제한하는 할당량이 있습니다. 다음 FAQ를 참조하세요.

Service Bus 표준 네임스페이스가 있습니다. 리소스 그룹 '$system' 아래에 요금이 표시되는 이유는 무엇인가요?

Azure Service Bus는 최근에 청구 구성 요소를 업그레이드했습니다. 이러한 변경으로 인해 Service Bus 표준 네임스페이스가 있는 경우 리소스 그룹 $system 아래에 리소스 /subscriptions/<azure_subscription_id>/resourceGroups/$system/providers/Microsoft.ServiceBus/namespaces/$system에 대한 행 항목이 표시될 수 있습니다.

이러한 요금은 Service Bus 표준 네임스페이스를 프로비저닝한 Azure 구독당 기본 요금을 나타냅니다.

이러한 요금은 새로운 것이 아니라 이전 청구 모델에도 존재했던 것입니다. 유일한 변경 내용은 이제 $system 아래에 나열된다는 것입니다. 이것은 $system 리소스 ID의 특정 리소스에 연결되지 않은 구독 수준 요금을 그룹화하는 새로운 청구 시스템의 제약 조건 때문입니다.

할당량

Service Bus 제한 및 할당량 목록은 Service Bus 할당량 개요를 참조하세요.

1MB를 초과하는 메시지 크기를 처리하는 방법

Service Bus 메시징 서비스(큐 및 토픽/구독)를 사용하면 애플리케이션에서 최대 256KB(표준 계층) 또는 100MB(프리미엄 계층) 크기의 메시지를 보낼 수 있습니다. 허용된 크기보다 큰 메시지를 처리하는 경우 이 블로그 게시물에서 설명하는 클레임 검사 패턴을 사용합니다.

문제 해결

네임스페이스를 다른 구독에서 삭제한 후 만들 수 없는 이유는 무엇인가요?

구독에서 네임스페이스를 삭제한 후에 다른 구독에서 동일한 이름으로 다시 만들려면 4시간 정도 기다려야 합니다. 그렇지 않으면 다음 오류 메시지가 표시될 수 있습니다. Namespace already exists

Azure Service Bus API 및 해당 제안된 작업에 의해 생성된 일부 예외는 무엇인가요?

가능한 Service Bus 예외의 목록은 예외 개요를 참조하세요.

공유 액세스 서명이란 무엇이고 어떤 언어가 서명 생성을 지원하나요?

공유 액세스 서명은 SHA-256 보안 해시 또는 URI에 따른 인증 메커니즘입니다. Node.js, PHP, Java, Python 및 C#에서 직접 서명을 생성하는 방법에 대한 내용은 공유 액세스 서명 문서를 참조하세요.

구독 및 네임스페이스 관리

다른 Azure 구독으로 네임스페이스를 마이그레이션하려면 어떻게 해야 하나요?

Azure Portal 또는 PowerShell 명령을 사용하여 Azure 구독 간에 네임스페이스를 이동할 수 있습니다. 작업을 실행하기 위해 네임스페이스가 활성화되어야 합니다. 명령을 실행하는 사용자는 원본 및 대상 구독에 대한 관리자여야 합니다.

포털

Azure Portal을 사용하여 Service Bus 네임스페이스를 다른 구독으로 마이그레이션하려면 여기에 있는 지침을 따르세요.

PowerShell

다음 PowerShell 명령 시퀀스는 네임스페이스를 Azure 구독 간에 이동합니다. 이 작업을 실행하려면 네임스페이스 이미 활성 상태여야 하며 PowerShell 명령을 실행하는 사용자는 원본 및 대상 구독의 관리자여야 합니다.

# Create a new resource group in target subscription
Select-AzSubscription -SubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff'
New-AzResourceGroup -Name 'targetRG' -Location 'East US'

# Move namespace from source subscription to target subscription
Select-AzSubscription -SubscriptionId 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
$res = Find-AzResource -ResourceNameContains mynamespace -ResourceType 'Microsoft.ServiceBus/namespaces'
Move-AzResource -DestinationResourceGroupName 'targetRG' -DestinationSubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff' -ResourceId $res.ResourceId

Service Bus 네임스페이스에서 TLS 1.0 또는 1.1을 사용하지 않도록 설정할 수 있나요?

예, 최소 TLS 버전을 설정하여 Service Bus 네임스페이스에서 TLS 1.0 또는 1.1을 사용하지 않도록 설정할 수 있습니다. 자세한 내용은 Service Bus 네임스페이스에 대한 요청에 대해 필요한 최소 버전의 TLS(전송 계층 보안) 적용을 참조하세요.

다음 단계

Service Bus에 대한 자세한 내용은 다음 문서를 참조하세요.