programing

비동기 프로그래밍 및 Azure 함수입니다.

testmans 2023. 4. 25. 22:00
반응형

비동기 프로그래밍 및 Azure 함수입니다.

Azure 기능 "성능 고려 사항" 파트의 "비동기 코드를 사용하되 통화 차단을 방지하십시오"에서 다음과 같이 설명합니다.async프로그래밍은 성능 향상을 위해 권장되는 실습입니다.하지만, 그것을 사용하는 가장 좋은 방법은 무엇일까요?예를 들어, 시나리오에서 다음과 같은 서비스 버스 트리거가 있습니다.

public static void Run(
    [ServiceBusTrigger("topicname", "subname", AccessRights.Manage, 
    Connection = "TopicConnection")]string message, TraceWriter log)
{
    try {
        log.Info($"C# ServiceBus topic trigger function processed message: {message}");

        Task.Run(() => PushToDb(message, log));
    }
    catch(Exception ex)
    {
        log.Info($"Exception found {ex.Message}");
    }
}

위 코드에서, 나는 전화를 합니다.PushToDb방법async그러나 백그라운드에서 실행되므로 Function 런타임은 메시지가 성공적으로 소비되었다고 가정하고 메시지를 완료합니다.만약에요?PushToDb메서드에서 예외가 발생합니까?실행 시 완료되지 않은 대신 버려야 한다는 사실을 어떻게 알 수 있습니까?

사용하려고 합니다.async퍼포먼스를 위해서 최대한 많이요.

함수를 비동기화할 수 있습니다.

public static async Task Run(
    [ServiceBusTrigger("topicname", "subname", AccessRights.Manage, Connection = "TopicConnection")]string message,
    TraceWriter log)
{
    try
    {
        log.Info($"C# ServiceBus topic trigger function processed message: {message}");
        await PushToDb(message, log);
    }
    catch(Exception ex)
    {
        log.Info($"Exception found {ex.Message}");
    }
}

함수 런타임에서는 함수를 비동기화하고 작업을 반환할 수 있습니다.

이 경우 정상적으로 예외를 처리할 수 있도록 통화만 기다리면 됩니다.

언급URL : https://stackoverflow.com/questions/48339829/async-programming-and-azure-functions 입니다.

반응형