Azure Service Bus - 메시지 CLI 재생

ASB(Azure Service Bus)와 같은 비동기 메시징 제품으로 작업할 때 큐 및 게시/구독 시나리오로 작업하게 됩니다. 두 경우 모두 메시지 처리가 성공적이지 않은 경우가 있습니다. 필요한 데이터를 사용할 수 없거나 일부 종속 시스템이 오프라인 상태일 수 있습니다.

이 경우 실패를 처리해야 하며 수행해야 하는 작업은 구현 패턴에 따라 다릅니다. 일반적으로 컴퓨팅 처리에서 메시지를 처리하기 위해 일정 횟수 시도한 후 전송은 dead letter it . 실패한 시도에 대한 전략으로 ASB 엔터티의 데드 레터 하위 큐 섹션을 사용할 수 있으며 메시지는 조치를 취할 때까지 여기에 위치합니다.

중앙 집중식errors 엔터티로 오류를 보낼 수도 있지만 어떤 패턴을 선택하든 처리해야 할 미해결 메시지가 있습니다. 소량의 메시지에서는 Service Bus Explorer 및 내장된 포털 도구와 같은 도구를 사용하여 이를 달성할 수 있지만 처리해야 할 메시지가 1000개가 넘는 경우 곧 문제가 됩니다.

시스템은 가능한 한 자가 치유되어야 하지만 개입이 필요하고 시나리오를 처리하는 자동화된 방법을 원할 때가 있습니다.

예를 들어, 데드 레터 메시지를 항상 즉시 재생하는 것은 좋은 전략이 아닙니다. 진정한 시스템 문제가 있는 경우 오류 요청 폭풍을 만들 것입니다. 처리가 성공적으로 이루어지고 자동화된 방법을 원할 때 재생해야 합니다.

CLI 지원



메시지를 재생할 수 있는 방법에는 여러 가지가 있습니다. 함수 앱, 논리 앱을 작성하거나 일부 코드를 실행할 수 있는 다른 유형의 컴퓨팅을 프로비저닝할 수 있습니다.

그러나 메시지 재생은 재사용 가능한 솔루션을 제공할 수 있는 매우 일반적인 문제처럼 느껴졌습니다. CLI 지원을 만들면 누구나 쉽게 사용할 수 있습니다. CLI 도구로서 쉽게 설치할 수 있고 사람들이 원하는 방식으로 작업할 수 있는 크로스 플랫폼 솔루션이 됩니다.

따라서 수행하려는 메시지 작업을 나타내는 구성 파일을 정의할 수 있는 Asos.ServiceBus.MessageSiphon 을(를) 만들었습니다.

이 예에서는 SAS 키를 사용하여 소스 네임스페이스에 연결하고 주제 구독에서 메시지를 엿본 다음 다른 네임스페이스에 복제합니다. 이번에는 RBAC를 사용하여 연결합니다.

{
    "Logging": {
        "LogLevel": {
        }
    },    
    "ReplayMessagesJob": {
        "JobType": "SourceToTarget",
        "JobName": "Clone-Message-To-Other-Namespace",
        "NumberOfConcurrentProcesses": 5,
        "ServiceBusDetails": [
            {
                "Name": "Source",
                "ConnectionMode": "ConnectionString",
                "ConnectionString": "Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=access-key"
            },
            {
                "Name": "Target",
                "ConnectionMode": "Rbac",
                "FullyQualifiedNamespace": "namespace1.servicebus.windows.net"
            }
        ],
        "SiphonWork": [
            {
                "SiphonMode": "Clone",
                "SourceConnectionName": "Source",
                "SourceEntity": "topic-entity",
                "SourceSubscriptions": [ "test-subscription" ], 
                "SourceBatchReceiveSize" : 40,
                "TargetConnectionName": "Target",
                "TargetEntity": "copy-of-topic"
            }
        ]
    }
}


패키지와 함께 게시한 README에는 다양한 예제가 있지만 사용법은 항상 동일합니다. 구성 파일을 정의한 다음 도구 설치 후 CLI를 통해 실행

siphon-asb-messages -n D:\temp\file-with-config.json


마무리



구성 파일 기반 CLI 도구를 사용하여 우리는 사용자의 손에 힘을 주고 다양한 구성을 정의할 수 있도록 합니다. 다양한 일반적인 시나리오와 연령 또는 메시지 헤더와 같은 메시지를 필터링하는 방법을 지원합니다.

이 도구는 빌드 에이전트 파이프라인에 설치하고 일정에 따라 실행하거나 개발 환경의 모든 엔지니어가 설치할 수 있습니다.

이를 통해 네트워크 및 RBAC 제한 네임스페이스와 같은 요구 사항을 처리할 수 있습니다. 엔지니어가 네임스페이스에 연결하고 데이터를 조작하도록 허용하는 대신 제어된 방식으로 빌드 파이프라인에서 실행되는 작업으로 정의할 수 있습니다. Azure Devops Pipeline 예제는 README에 포함되어 있습니다.

소스 코드는 곧 Githubhttps://github.com/ASOS/asos-servicebus-message-siphon에서 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기