다음을 통해 공유


Azure Functions에 대한 RabbitMQ 출력 바인딩 개요

RabbitMQ 출력 바인딩을 사용하여 RabbitMQ 큐에 메시지를 보냅니다.

참고 항목

RabbitMQ 바인딩은 Elastic PremiumDedicated(App Service) 계획에서만 완전히 지원됩니다. Flex 소비소비 계획은 아직 지원되지 않습니다.

RabbitMQ 바인딩은 Azure Functions v1.x 런타임에서 지원되지 않습니다.

설정 및 구성 세부 정보에 대한 자세한 내용은 개요를 참조하세요.

예시

다음 C# 모드 중 하나를 사용하여 C# 함수를 만들 수 있습니다.

  • 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. .NET 및 .NET Framework용 LTS(장기 지원) 및 비 LTS 버전에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다.
  • In-process 모델: Azure Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다.
  • C# 스크립트: Azure Portal에서 C# 함수를 만들 때 주로 사용됩니다.
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{
    var logger = context.GetLogger(nameof(RabbitMQFunction));

    logger.LogInformation(item);

    var message = $"Output message created at {DateTime.Now}";
    return message;
}

다음 Java 함수는 Java RabbitMQ 형식@RabbitMQOutput주석을 사용하여 RabbitMQ 큐 출력 바인딩에 대한 구성을 설명합니다. 이 함수는 TimerTrigger에 의해 5분마다 트리거될 때 RabbitMQ 큐에 메시지를 보냅니다.

@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
    output.setValue("Some string");
}

다음 예제에서는 function.json 파일의 RabbitMQ 출력 바인딩과 바인딩을 사용하는 JavaScript 함수를 보여줍니다. 함수는 HTTP 트리거에서 메시지를 읽고 RabbitMQ 큐에 출력합니다.

function.json 파일의 바인딩 데이터는 다음과 같습니다.

{
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "authLevel": "function",
            "name": "input",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

JavaScript 코드는 다음과 같습니다.

module.exports = async function (context, input) {
    context.bindings.outputMessage = input.body;
};

다음 예제에서는 function.json 파일의 RabbitMQ 출력 바인딩과 바인딩을 사용하는 Python 함수를 보여줍니다. 함수는 HTTP 트리거에서 메시지를 읽고 RabbitMQ 큐에 출력합니다.

function.json 파일의 바인딩 데이터는 다음과 같습니다.

{
    "scriptFile": "__init__.py",
    "bindings": [
        {
            "authLevel": "function",
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "$return"
        },​​
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

_init_.py:

import azure.functions as func

def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
    input_msg = req.params.get('message')
    outputMessage.set(input_msg)
    return 'OK'

특성

격리된 작업자 프로세스In-process C# 라이브러리는 모두 특성을 사용하여 RabbitMQ 큐에 쓰는 출력 바인딩을 정의합니다.

RabbitMQOutputAttribute 생성자는 다음 매개 변수를 허용합니다.

매개 변수 설명
QueueName 메시지를 받을 큐의 이름입니다.
HostName 이 매개 변수는 더 이상 지원되지 않으며 무시됩니다. 이후 버전에서 제거됩니다.
ConnectionStringSetting RabbitMQ 서버에 대한 연결 문자열을 포함하는 앱 설정의 이름입니다. 이 설정은 앱 설정 키 이름만 사용하므로 연결 문자열 값을 직접 설정할 수 없습니다. 자세한 내용은 연결을 참조하세요.
사용자 이름 설정 이 매개 변수는 더 이상 지원되지 않으며 무시됩니다. 이후 버전에서 제거됩니다.
비밀번호 설정 이 매개 변수는 더 이상 지원되지 않으며 무시됩니다. 이후 버전에서 제거됩니다.
포트 사용된 포트를 가져오거나 설정합니다. 기본값은 0이며 RabbitMQ 클라이언트의 기본 포트 설정인 5672를 가리킵니다.
DisableCertificateValidation 인증서 유효성 검사를 사용하지 않도록 설정해야 하는지 여부를 나타내는 값을 가져오거나 설정합니다. 프로덕션에 권장되지 않습니다. SSL을 사용하지 않도록 설정한 경우에는 적용되지 않습니다.

주석

주석 RabbitMQOutput 을 사용하면 RabbitMQ 메시지를 만들 때 실행되는 함수를 만들 수 있습니다.

주석은 다음 구성 설정을 지원합니다.

설정 설명
queueName 메시지를 받을 큐의 이름입니다.
connectionStringSetting RabbitMQ 서버에 대한 연결 문자열을 포함하는 앱 설정의 이름입니다. 이 설정은 앱 설정 키 이름만 사용하므로 연결 문자열 값을 직접 설정할 수 없습니다. 자세한 내용은 연결을 참조하세요.
disableCertificateValidation 인증서 유효성 검사를 사용하지 않도록 설정해야 하는지 여부를 나타내는 값을 가져오거나 설정합니다. 프로덕션에 권장되지 않습니다. SSL을 사용하지 않도록 설정한 경우에는 적용되지 않습니다.

구성

다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.

function.json 속성 설명
유형 RabbitMQ로 설정해야 합니다.
방향 out로 설정해야 합니다.
이름 함수 코드에서 큐를 나타내는 변수의 이름입니다.
queueName 메시지를 보낼 큐의 이름입니다.
connectionStringSetting RabbitMQ 서버에 대한 연결 문자열을 포함하는 앱 설정의 이름입니다. 이 설정은 앱 설정 키 이름만 사용하므로 연결 문자열 값을 직접 설정할 수 없습니다. 자세한 내용은 연결을 참조하세요.
disableCertificateValidation 인증서 유효성 검사를 사용하지 않도록 설정해야 하는지 여부를 나타내는 값을 가져오거나 설정합니다. 프로덕션에 권장되지 않습니다. SSL을 사용하지 않도록 설정한 경우에는 적용되지 않습니다.

로컬에서 개발하는 경우 컬렉션의 Values에 애플리케이션 설정을 추가합니다.

전체 예제는 예제 섹션을 참조하세요.

사용

RabbitMQ 트리거에서 지원하는 매개 변수 형식은 Functions 런타임 버전, 확장 패키지 버전 및 사용된 C# 모달리티에 따라 다릅니다.

RabbitMQ 바인딩은 현재 격리된 작업자 프로세스에서 실행할 때 문자열 및 직렬화 가능한 개체 형식만 지원합니다.

출력 바인딩에 다음 매개 변수 형식을 사용합니다.

  • byte[] - 함수가 종료될 때 매개 변수 값이 null이면 Functions는 메시지를 만들지 않습니다.
  • string - 함수가 종료될 때 매개 변수 값이 null이면 Functions는 메시지를 만들지 않습니다.
  • POJO - 매개 변수 값의 형식이 Java 개체로 지정되지 않으면 오류가 발생합니다.

큐 메시지는 context.bindings.<NAME>이 function.json에 정의된 이름과 일치하는 <NAME>을 통해 사용할 수 있습니다. 페이로드가 JSON인 경우 값은 개체로 역직렬화됩니다.

관계망

중요합니다

RabbitMQ 바인딩은 Microsoft Entra 인증 및 관리 ID를 지원하지 않습니다. Azure Key Vault를 사용하여 RabbitMQ 연결 문자열 중앙에서 관리할 수 있습니다. 자세한 내용은 연결 관리를 참조 하세요.

확장 hostNameuserNameSettingpasswordSetting 버전 2.x부터는 RabbitMQ 서버에 대한 연결을 정의하는 데 더 이상 지원되지 않습니다. 대신 .를 사용해야 connectionStringSetting합니다.

이 속성은 connectionStringSetting 앱 설정에서 키-값 쌍의 이름만 허용할 수 있습니다. 바인딩에서 연결 문자열 값을 직접 설정할 수 없습니다.

예를 들어 바인딩 정의에서 설정한 connectionStringSettingrabbitMQConnection 경우 함수 앱에는 연결 값 또는 amqp://myuser:***@contoso.rabbitmq.example.com:5672Azure Key Vault 참조를 반환하는 앱 rabbitMQConnection 설정이 있어야 합니다.

로컬로 실행하는 경우 local.settings.json 파일에 정의된 키 값 connectionStringSetting 도 있어야 합니다. 그렇지 않으면 앱이 로컬 컴퓨터에서 서비스에 연결할 수 없으며 오류가 발생합니다.