.NET 5 Azure Function 격리 프로세스 출력 바인딩

Azure에서 Queue, Event Hub, Service Bus 같은 Message 서비스를 사용하면서 데이터가 입력되었을 때 어떤 Trigger가 동작하여 메세지를 처리하고 싶을 때 Azure Function을 사용하면 직관적이고 편리합니다. 또한 이 Azure Function이 처리가 완료되면 다른 Message 리소스로 데이터를 전송할 수 있는데요.

.NET 5에서 격리 프로세스 방식 Azure Function을 사용하면 예제에서 보는 것처럼 Run함수에 반환형이 string으로 지정되어 있습니다. 구조가 만약

A Function → B Queue → C Function

구조일 때 A에서 정상 처리가 되면 B Queue로 메세지가 전달될 것입니다.
B Queue에 데이터가 들어오면 C Function이 발생됩니다.
따라서 A Function에서 어떤 예외가 발생했을 때는 B Queue로 메세지를 보내고 싶지 않습니다. 이 시나리오에서 B Queue로 메세지를 넣지 않는 방법이 있을까요?
사실 return을 string.Empty로 주면 되지만 이 경우 C Function이 발생은 합니다. C Function안에서 string.Empty라면 처리를 안하도록 해야할텐데, 문제는 이런식으로 Function이 연계되어있을 때 쓸데없는 Trigger가 많이 발생된다는 것입니다. 예를 들어

A Func → B Queue → C Func → D Queue → E Func → F Service Bus → G Func → H Event Hubs → I Func

이런 식 일 때, A Func에서 문제가 발생하여 B Queue로 string.Empty를 보내게되면 나머지 C, F, G, I Function 들이 string.Empty에 대한 처리를 해야할 것입니다.

혹시 이 연계를 끊을 수 있는 방법이 있을까요? 또는 다른 방법이 있을까요…? Azure Function이라는게 동작 시간동안만 과금이 되는 방식이라 string.Empty에 대한 처리는 매우 짧을 것이라 비용이 문제가 되지는 않겠지만, 그냥 개발자 관점으로 쓸데없는 리소스를 낭비하고 싶지 않습니다.

1개의 좋아요

마이크로소프트에도 질문남겼었습니다.

image

답변해주신 분의 말에 의하면 본인도 해보지는 않았어도 이 링크를 확인해보면 value가 null이 아닐 경우 에 바인딩을 시도하고 있으므로 null을 넣어보라고 하네요.

1개의 좋아요