Azure Service Bus에서 메시지 일괄 삭제(미리 보기)
Azure Service Bus는 분리된 애플리케이션과 서비스 간에 메시지를 보내고 받을 수 있는 완전 관리형 엔터프라이즈 통합 메시지 브로커입니다. 그러나 만료, 손상 또는 관련이 없는 경우처럼 메시지를 처리하지 않고 큐 또는 구독에서 메시지를 삭제하려는 경우가 있습니다. 이 문서에서는 Azure Service Bus에서 일괄 처리로 메시지를 삭제하는 방법을 보여 줍니다.
메시지 일괄 처리 삭제 시나리오
Azure Service Bus에서 일괄 삭제 메시지 기능을 사용할 수 있는 몇 가지 시나리오가 있습니다. 다음과 같습니다.
- 만료된 메시지: TTL(Time to Live) 값을 초과하고 배달 못 한 편지 큐에 있는 메시지를 삭제합니다.
- 유효성 검사 또는 처리 실패: 유효성 검사 또는 처리 논리에 실패하고 배달 못 한 편지 큐에 있는 메시지를 제거합니다.
- 관련 없는 메시지: 활성 큐에서 애플리케이션 논리와 더 이상 관련이 없는 메시지를 삭제합니다.
- 중복 또는 잘못된 콘텐츠 처리: 활성 큐에서 중복되거나 잘못된 메시지를 제거합니다.
메시지 일괄 삭제 기능을 사용하면 메시지를 하나씩 삭제하는 대신 한 번의 작업으로 큐 또는 구독에서 여러 메시지를 삭제할 수 있습니다. 서비스 쪽에서 삭제가 수행되므로 삭제하기 전에 메시지를 받을 필요가 없습니다. 이 메서드는 서비스 요청 수와 네트워크 대기 시간을 최소화합니다.
Important
현재 일괄 처리 삭제는 분할된 엔터티에서 지원되지 않습니다. 일괄 처리 삭제 호출에서 최대 4,000개 메시지를 삭제할 수 있습니다. 일괄 처리 삭제는 최상의 노력으로 수행되며, 단일 API 호출에서 정확한 messageCount가 삭제될 것이라고 보장하지는 않습니다.
Service Bus에서 삭제 메시지를 일괄 처리 삭제하는 방법
Service Bus 수신기 개체에서 DeleteMessagesAsync를 호출하여 메시지를 삭제할 수 있습니다. 서버 쪽 DeleteMessagesAsync
에는 두 개의 매개 변수 messageCount
beforeEnqueueTime
가 필요합니다.
messageCount
: 삭제할 원하는 메시지 수입니다. 서비스에서 이 제한보다 적은 메시지를 삭제할 수 있습니다.beforeEnqueueTime
: 삭제의 차단 시간을 나타내는 선택적 DateTimeOffset(UTC)입니다. 이 시간 전에 큐에 포함된 메시지만 삭제됩니다.
또한 PurgeMessagesAsync를 호출하여 엔터티에서 모든 메시지를 제거할 수 있습니다.
Azure Portal 사용
Azure Portal에서 사용할 수 있는 Service Bus 탐색기를 사용하여 엔터티에서 메시지를 제거할 수도 있습니다. 다음 단계에 따라 메시지를 제거할 수 있습니다.
- 메시지를 삭제하려는 엔터티의 'Service Bus 탐색기' 블레이드로 이동합니다.
- Service Bus 탐색기 드롭다운에서 '수신 모드'를 선택합니다.
- 스냅샷에 표시된 대로 메시지 제거 옵션을 클릭합니다.
- 다른 대화 상자가 나타납니다. '제거'를 입력하여 메시지 제거 작업을 실행합니다.
Azure SDK를 사용하여 이러한 작업을 수행하는 경우 beforeEnqueueTime 매개 변수는 기본적으로 현재 UTC 시간(DateTime.UtcNow())으로 설정됩니다. 의도하지 않은 메시지 삭제를 방지하기 위해 올바른 값을 제공하는 것이 중요합니다.
참고 항목
제거 작업을 수행하면 여러 API 호출이 포함되므로 CPU 사용량이 증가할 수 있습니다. 삭제하는 동안 잠긴 메시지는 제거할 수 없으며 엔터티에 유지됩니다.
다음 단계
Azure Service Bus 기능을 살펴보려면 선택한 언어로 샘플을 사용해 보세요.
- .NET용 Azure Service Bus 클라이언트 라이브러리 샘플(최신)
- Java용 Azure Service Bus 클라이언트 라이브러리 샘플(최신)
- Python용 Azure Service Bus 클라이언트 라이브러리 샘플
- JavaScript용 Azure Service Bus 클라이언트 라이브러리 샘플
- TypeScript용 Azure Service Bus 클라이언트 라이브러리 샘플
이전 .NET 및 Java 클라이언트 라이브러리에 대한 샘플:
- .NET용 Azure Service Bus 클라이언트 라이브러리 샘플(레거시) - 프리페치 샘플을 참조하세요.
- Java용 Azure Service Bus 클라이언트 라이브러리 샘플(레거시) - 프리페치 샘플을 참조하세요.
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로부터 공식 지원 및 업데이트를 받을 수 없습니다. 자세한 내용은 사용 중지 공지 지원을 참조하세요.