배달 못한 편지 위치 설정 및 정책 다시 시도

이벤트 구독을 만들 때 이벤트 전송 설정을 사용자 지정할 수 있습니다. 이 문서에서는 배달 못한 편지 위치를 설정하고 재시도 설정을 사용자 지정하는 방법을 보여 줍니다. 이 기능에 대한 자세한 내용은 Event Grid 메시지 전송 및 재시도를 참조하세요.

참고 항목

메시지 배달, 다시 시도 및 배달 못한 편지에 대해 알아보려면 Event Grid 메시지 배달 및 다시 시도 개념 문서를 참조하세요.

배달 못한 편지 위치 설정

배달 못한 편지 위치를 설정하려면 엔드포인트로 전달할 수 없는 이벤트를 보유할 스토리지 계정이 필요합니다. 이 예제는 기존 스토리지 계정의 리소스 ID를 가져옵니다. 배달 못한 편지 엔드포인트의 스토리지 계정에 있는 컨테이너를 사용하는 이벤트 구독을 만듭니다.

참고 항목

  • 이 문서에서 명령을 실행하기 전에 스토리지에서 스토리지 계정 및 Blob 컨테이너를 만듭니다.
  • Event Grid 서비스는 이 컨테이너에 Blob을 만듭니다. Blob 이름에는 모든 문자가 대문자인 Event Grid 구독의 이름이 포함됩니다. 예를 들어 구독 이름이 My-Blob-Subscription인 경우 배달 못한 편지 Blob의 이름은 MY-BLOB-SUBSCRIPTION(myblobcontainer/MY-BLOB-SUBSCRIPTION/2019/8/8/5/111111111-1111-1111-1111-111111111111.json)입니다. 이 동작은 Azure 서비스 간에 처리하는 경우 차이가 발생하는 것을 방지합니다.
  • 위의 예제에서 .../2019/8/8/5/....../YYYY/MM/DD/HH/...와 같이 0이 아닌 숫자로 채워진 날짜 및 시간(UTC)을 나타냅니다.
  • 생성된 배달 못한 편지 Blob에는 배열에 하나 이상의 이벤트가 포함되며 배달 못한 편지를 처리할 때 고려해야 할 중요한 동작입니다.

Azure Portal

이벤트 구독을 만드는 동안 다음 이미지와 같이 추가 기능 탭에서 배달 못한 편지 기능을 사용하도록 설정할 수 있습니다. 이 기능을 사용하도록 설정한 후에는 배달 못한 편지 이벤트를 보관할 Blob 컨테이너와 Blob Storage가 있는 Azure 구독을 지정합니다.

필요에 따라 배달 못한 편지에 대해 시스템이 할당한 관리 ID 또는 사용자가 할당한 관리 ID를 사용하도록 설정할 수 있습니다. 관리 ID는 스토리지에 이벤트를 쓸 수 있는 RBAC(역할 기반 액세스 제어) 역할의 구성원이어야 합니다.

Screenshot showing the dead-letter configuration of an event subscription.

배달 못한 편지를 사용하도록 설정하고 기존 이벤트 구독에 대한 설정을 구성할 수도 있습니다. 이벤트 구독의 이벤트 구독 페이지에서 추가 기능 탭으로 전환하면 다음 이미지와 같이 배달 못한 편지 설정이 표시됩니다.

Screenshot showing the dead-letter configuration of an existing event subscription.

Azure CLI

containername=testcontainer

topicid=$(az eventgrid topic show --name demoTopic -g gridResourceGroup --query id --output tsv)
storageid=$(az storage account show --name demoStorage --resource-group gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --deadletter-endpoint $storageid/blobServices/default/containers/$containername

배달 못한 편지를 해제하려면 이벤트 구독을 만드는 명령을 다시 실행하지만 deadletter-endpoint에 대한 값을 제공하지는 않습니다. 이벤트 구독을 삭제할 필요가 없습니다.

참고 항목

로컬 머신에서 Azure CLI를 사용 중인 경우 Azure CLI 버전 2.0.56 이상을 사용하세요. Azure CLI의 최신 버전을 설치하는 방법에 대한 지침은 Azure CLI 설치를 참조하세요.

PowerShell

$containername = "testcontainer"

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id
$storageid = (Get-AzStorageAccount -ResourceGroupName gridResourceGroup -Name demostorage).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -DeadLetterEndpoint "$storageid/blobServices/default/containers/$containername"

배달 못한 편지를 해제하려면 이벤트 구독을 만드는 명령을 다시 실행하지만 DeadLetterEndpoint에 대한 값을 제공하지는 않습니다. 이벤트 구독을 삭제할 필요가 없습니다.

참고 항목

로컬 머신에서 Azure Poweshell을 사용하는 경우 Azure PowerShell 버전 1.1.0 이상을 사용하세요. Azure 다운로드에서 최신 Azure PowerShell을 다운로드하여 설치합니다.

재시도 정책 설정

Event Grid 구독을 만들 때 Event Grid에서 이벤트 전송을 시도할 기간의 값을 설정할 수 있습니다. 기본적으로 Event Grid는 24시간(1440분) 동안 또는 30회 시도합니다. Event Grid 구독에 대해 이러한 값 중 하나를 설정할 수 있습니다. 이벤트 TTL(Time to Live)의 값은 1과 1440 사이의 정수여야 합니다. 최대 재시도 값은 1과 30 사이의 정수여야 합니다.

재시도 일정을 구성할 수 없습니다.

Azure Portal

이벤트 구독을 만드는 동안 추가 기능 탭에서 재시도 정책 설정을 구성할 수 있습니다.

Screenshot showing the retry policy configuration of an event subscription.

기존 이벤트 구독에 대해 재시도 정책 설정을 구성할 수도 있습니다. 이벤트 구독의 이벤트 구독 페이지에서 추가 기능 탭으로 전환하면 다음 이미지와 같이 재시도 정책 설정이 표시됩니다.

Screenshot showing the retry policy configuration of an existing event subscription.

Azure CLI

이벤트 TTL(Time to Live)을 1440분 이외의 값으로 설정하려면 다음을 사용합니다.

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --event-ttl 720

최대 재시도 값을 30 이외의 값으로 설정하려면 다음을 사용합니다.

az eventgrid event-subscription create \
  -g gridResourceGroup \
  --topic-name <topic_name> \
  --name <event_subscription_name> \
  --endpoint <endpoint_URL> \
  --max-delivery-attempts 18

참고 항목

event-ttlmax-deliver-attempts를 모두 설정하면 Event Grid는 먼저 만료되는 것을 사용하여 이벤트 전송을 중지할 시기를 결정합니다. 예를 들어 TTL(Time-to-Live)로 30분을 설정하고 최대 배달 시도를 5회로 설정한 경우입니다. 30분 후 이벤트가 전달되지 않거나 5회 시도 후에도 전달되지 않으면 발생 순서에 관계없이 이벤트가 배달되지 않습니다. 지수 재시도 일정과 관련하여 최대 배달 시도를 10회로 설정하면 30분 TTL에 도달하기 전에 최대 6번의 배달 시도가 발생하므로 최대 시도 횟수를 10회로 설정하면 이 경우에 영향을 주지 않으며 이벤트는 30분 후에 배달 불가능 상태가 됩니다.

PowerShell

이벤트 TTL(Time to Live)을 1440분 이외의 값으로 설정하려면 다음을 사용합니다.

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -EventTtl 720

최대 재시도 값을 30 이외의 값으로 설정하려면 다음을 사용합니다.

$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name demoTopic).Id

New-AzEventGridSubscription `
  -ResourceId $topicid `
  -EventSubscriptionName <event_subscription_name> `
  -Endpoint <endpoint_URL> `
  -MaxDeliveryAttempt 18

참고 항목

event-ttlmax-deliver-attempts를 모두 설정하면 Event Grid는 먼저 만료되는 것을 사용하여 이벤트 전송을 중지할 시기를 결정합니다. 예를 들어 TTL(Time-to-Live)로 30분을 설정하고 최대 배달 시도를 5회로 설정한 경우입니다. 30분 후 이벤트가 전달되지 않거나 5회 시도 후에도 전달되지 않으면 발생 순서에 관계없이 이벤트가 배달되지 않습니다. 지수 재시도 일정과 관련하여 최대 배달 시도를 10회로 설정하면 30분 TTL에 도달하기 전에 최대 6번의 배달 시도가 발생하므로 최대 시도 횟수를 10회로 설정하면 이 경우에 영향을 주지 않으며 이벤트는 30분 후에 배달 불가능 상태가 됩니다.

다음 단계