다음을 통해 공유


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

참고 항목

RabbitMQ 바인딩은 프리미엄 및 전용 계획에서만 완전히 지원됩니다. 사용은 지원되지 않습니다.

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

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

예시

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

  • 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다.
  • In Process 모델: 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# 라이브러리는 모두 특성을 사용하여 함수를 정의합니다. C# 스크립트는 대신 function.json 구성 파일을 사용합니다.

특성의 생성자는 다음 매개 변수를 사용합니다.

매개 변수 설명
QueueName 메시지를 받을 큐의 이름입니다.
HostName 10.26.45.210과 같은 큐의 호스트 이름입니다. ConnectStringSetting을 사용할 때 무시됩니다.
UserNameSetting 큐에 액세스하기 위한 사용자 이름이 포함된 앱 설정의 이름(예: UserNameSetting: "%< UserNameFromSettings >%"). ConnectStringSetting을 사용할 때 무시됩니다.
PasswordSetting PasswordSetting: "%< PasswordFromSettings >%"과 같이 큐에 액세스하기 위한 암호가 포함된 앱 설정의 이름입니다. ConnectStringSetting을 사용할 때 무시됩니다.
ConnectionStringSetting RabbitMQ 메시지 큐 연결 문자열 포함하는 앱 설정의 이름입니다. 앱 설정 대신 연결 문자열을 직접 지정하면 트리거가 작동하지 않습니다. 예를 들어 ConnectionStringSetting: "rabbitMQConnection"을 설정한 경우 local.settings.json과 함수 앱 모두에서 "RabbitMQConnection" : "< ActualConnectionstring >"와 같은 설정이 필요합니다.
포트 사용된 포트를 가져오거나 설정합니다. 기본값은 0이며 RabbitMQ 클라이언트의 기본 포트 설정인 5672를 가리킵니다.

C# 클래스 라이브러리에서는 RabbitMQTrigger 특성을 사용하세요.

다음은 격리된 작업자 프로세스 라이브러리에 대한 메서드 서명의 RabbitMQTrigger 특성입니다.

[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
    FunctionContext context)
{

주석

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

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

설정 설명
queueName 메시지를 받을 큐의 이름입니다.
hostName 10.26.45.210과 같은 큐의 호스트 이름입니다. ConnectStringSetting을 사용할 때 무시됩니다.
userNameSetting 큐에 액세스하기 위한 사용자 이름이 포함된 앱 설정의 이름(예: UserNameSetting: "%< UserNameFromSettings >%"). ConnectStringSetting을 사용할 때 무시됩니다.
passwordSetting PasswordSetting: "%< PasswordFromSettings >%"과 같이 큐에 액세스하기 위한 암호가 포함된 앱 설정의 이름입니다. ConnectStringSetting을 사용할 때 무시됩니다.
connectionStringSetting RabbitMQ 메시지 큐 연결 문자열 포함하는 앱 설정의 이름입니다. 앱 설정 대신 연결 문자열을 직접 지정하면 트리거가 작동하지 않습니다. 예를 들어 ConnectionStringSetting: "rabbitMQConnection"을 설정한 경우 local.settings.json과 함수 앱 모두에서 "RabbitMQConnection" : "< ActualConnectionstring >"와 같은 설정이 필요합니다.
port 사용된 포트를 가져오거나 설정합니다. 기본값은 0이며 RabbitMQ 클라이언트의 기본 포트 설정인 5672를 가리킵니다.

자세한 내용은 출력 바인딩 예제 를 참조하세요.

구성

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

function.json 속성 설명
type RabbitMQ로 설정해야 합니다.
direction out로 설정해야 합니다.
이름 함수 코드에서 큐를 나타내는 변수의 이름입니다.
queueName 메시지를 보낼 큐의 이름입니다.
hostName 10.26.45.210과 같은 큐의 호스트 이름입니다. connectStringSetting을 사용할 때 무시됩니다.
userName 큐에 액세스하기 위한 사용자 이름이 포함된 앱 설정의 이름(예: UserNameSetting: "< UserNameFromSettings >"). connectStringSetting을 사용할 때 무시됩니다.
password UserNameSetting과 같이 큐에 액세스하기 위한 암호가 포함된 앱 설정의 이름: "< UserNameFromSettings >". connectStringSetting을 사용할 때 무시됩니다.
connectionStringSetting RabbitMQ 메시지 큐 연결 문자열 포함하는 앱 설정의 이름입니다. local.settings.json의 앱 설정을 통하지 않고 연결 문자열을 직접 지정하면 트리거가 작동하지 않습니다. 예를 들어 connectionStringSetting: "rabbitMQConnection"을 설정한 경우 local.settings.json과 함수 앱 모두에서 "rabbitMQConnection" : "< ActualConnectionstring >"과 같은 설정이 필요합니다.
port 사용된 포트를 가져오거나 설정합니다. 기본값은 0이며 RabbitMQ 클라이언트의 기본 포트 설정인 5672를 가리킵니다.

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

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

사용

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

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

전체 예제는 C# 예제를 참조하세요.

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

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

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

Python 예제를 참조하세요.

다음 단계