다음을 통해 공유


.NET용 Azure WebJobs Storage 큐 클라이언트 라이브러리 - 버전 5.1.1

이 확장은 Azure Functions Azure Storage 큐에 액세스하기 위한 기능을 제공합니다.

시작

패키지 설치

NuGet을 사용하여 스토리지 큐 확장을 설치합니다.

dotnet add package Azure.WebJobs.Extensions.Storage.Queues

필수 구성 요소

이 패키지를 사용하려면 Azure 구독스토리지 계정이 필요합니다.

새 Storage 계정을 만들려면 Azure Portal, Azure PowerShell 또는 Azure CLI를 사용할 수 있습니다. 다음은 Azure CLI 사용 예입니다.

az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS

클라이언트 인증

확장이 큐에 액세스하려면 Azure Portal 에서 또는 아래의 Azure CLI 코드 조각을 사용하여 찾을 수 있는 연결 문자열이 필요합니다.

az storage account show-connection-string -g <your-resource-group-name> -n <your-resource-name>

연결 문자열은 AzureWebJobsStorage 앱 설정을 통해 제공할 수 있습니다.

주요 개념

큐 트리거 사용

큐 스토리지 트리거는 메시지가 Azure Queue Storage에 추가될 때 함수를 실행합니다.

자습서에 따라 Azure Functions 큐를 수신 대기하는 방법에 대해 알아보세요.

큐 바인딩 사용

Azure Functions에서 출력 바인딩을 설정하여 새 Azure Queue Storage 메시지를 만들 수 있습니다.

바인딩 자습서에 따라 Azure Functions 큐에 메시지를 생성하는 데 이 확장을 사용하는 방법을 알아보세요.

예제

큐 수신 대기

다음 예제 집합은 큐에 추가되는 메시지를 수신하고 대응하는 방법을 보여 줍니다.

문자열에 큐 메시지 바인딩

public static class QueueTriggerFunction_String
{
    [FunctionName("QueueTriggerFunction")]
    public static void Run(
        [QueueTrigger("sample-queue")] string message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue, content={content}", message);
    }
}

BinaryData에 큐 메시지 바인딩

public static class QueueTriggerFunction_BinaryData
{
    [FunctionName("QueueTriggerFunction")]
    public static void Run(
        [QueueTrigger("sample-queue")] BinaryData message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue, content={content}", message.ToString());
    }
}

QueueMessage에 큐 메시지 바인딩

public static class QueueTriggerFunction_QueueMessage
{
    [FunctionName("QueueTriggerFunction")]
    public static void Run(
        [QueueTrigger("sample-queue")] QueueMessage message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue, content={content}", message.Body.ToString());
    }
}

사용자 지정 형식에 큐 메시지 바인딩

public static class QueueTriggerFunction_CustomObject
{
    public class CustomMessage
    {
        public string Content { get; set; }
    }

    [FunctionName("QueueTriggerFunction")]
    public static void Run(
        [QueueTrigger("sample-queue")] CustomMessage message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue, content={content}", message.Content);
    }
}

JObject에 큐 메시지 바인딩

public static class QueueTriggerFunction_JObject
{
    [FunctionName("QueueTriggerFunction")]
    public static void Run(
        [QueueTrigger("sample-queue")] JObject message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue, content={content}", message["content"]);
    }
}

큐에 메시지 게시

다음 예제 집합에서는 특성을 사용하여 Queue 큐에 메시지를 추가하는 방법을 보여 줍니다.

QueueTrigger 샘플 완성도에만 사용됩니다. 즉, 다른 트리거 메커니즘을 대신 사용할 수 있습니다.

메시지를 문자열로 게시

public static class QueueSenderFunction_String_Return
{
    [FunctionName("QueueFunction")]
    [return: Queue("sample-queue-2")]
    public static string Run(
        [QueueTrigger("sample-queue-1")] string message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue-1, content={content}", message);
        logger.LogInformation("Dispatching message to sample-queue-2");
        return message;
    }
}

BinaryData로 메시지 게시

public static class QueueSenderFunction_BinaryData_Return
{
    [FunctionName("QueueFunction")]
    [return: Queue("sample-queue-2")]
    public static BinaryData Run(
        [QueueTrigger("sample-queue-1")] BinaryData message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue-1, content={content}", message.ToString());
        logger.LogInformation("Dispatching message to sample-queue-2");
        return message;
    }
}

QueueMessage로 메시지 게시

public static class QueueSenderFunction_QueueMessage_Return
{
    [FunctionName("QueueFunction")]
    [return: Queue("sample-queue-2")]
    public static QueueMessage Run(
        [QueueTrigger("sample-queue-1")] QueueMessage message,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue-1, content={content}", message.Body.ToString());
        logger.LogInformation("Dispatching message to sample-queue-2");
        return message;
    }
}

out 매개 변수를 통해 사용자 지정 형식으로 메시지 게시

public static class QueueSenderFunction_CustomObject_OutParamter
{
    public class CustomMessage
    {
        public string Content { get; set; }
    }

    [FunctionName("QueueFunction")]
    public static void Run(
        [QueueTrigger("sample-queue-1")] CustomMessage incomingMessage,
        [Queue("sample-queue-2")] out CustomMessage outgoingMessage,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue-1, content={content}", incomingMessage.Content);
        logger.LogInformation("Dispatching message to sample-queue-2");
        outgoingMessage = incomingMessage;
    }
}

수집기를 통해 사용자 지정 형식으로 메시지 게시

public static class QueueSenderFunction_CustomObject_Collector
{
    public class CustomMessage
    {
        public string Content { get; set; }
    }

    [FunctionName("QueueFunction")]
    public static void Run(
        [QueueTrigger("sample-queue-1")] CustomMessage incomingMessage,
        [Queue("sample-queue-2")] ICollector<CustomMessage> collector,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue-1, content={content}", incomingMessage.Content);
        logger.LogInformation("Dispatching message to sample-queue-2");
        collector.Add(incomingMessage);
    }
}

큐 속성에 액세스

public static class Function_BindingToQueueClient
{
    [FunctionName("QueueFunction")]
    public static async Task Run(
        [QueueTrigger("sample-queue")] string message,
        [Queue("sample-queue")] QueueClient queueClient,
        ILogger logger)
    {
        logger.LogInformation("Received message from sample-queue, content={content}", message);
        QueueProperties queueProperties = await queueClient.GetPropertiesAsync();
        logger.LogInformation("There are approximatelly {count} messages", queueProperties.ApproximateMessagesCount);
    }
}

확장 구성

샘플 함수 앱을 참조하세요.

문제 해결

문제 해결 지침은 Azure Functions 모니터링을 참조하세요.

다음 단계

Azure Function 소개 또는 Azure Function 가이드 만들기를 읽어보세요.

참여

이 라이브러리의 빌드, 테스트 및 기여에 대한 자세한 내용은 Storage CONTRIBUTING.md 참조하세요.

이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 cla.microsoft.com.

이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 Code of Conduct FAQ(규정 FAQ)를 참조하세요. 또는 추가 질문이나 의견은 opencode@microsoft.com으로 문의하세요.

Impressions