다음을 통해 공유


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 형식주석을 사용하여 @RabbitMQTrigger RabbitMQ 큐 트리거에 대한 구성을 설명합니다. 이 함수는 큐에 배치된 메시지를 가져와 로그에 추가합니다.

@FunctionName("RabbitMQTriggerExample")
public void run(
    @RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
    final ExecutionContext context)
{
    context.getLogger().info("Java HTTP trigger processed a request." + input);
}

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

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

{​​
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​

JavaScript 스크립트 코드는 다음과 같습니다.

module.exports = async function (context, myQueueItem) {​​
    context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
}​​;

다음 예제에서는 트리거를 통해 RabbitMQ 큐 메시지를 읽는 방법을 보여 줍니다.

RabbitMQ 바인딩은 typeRabbitMQTrigger로 설정된 function.json에서 정의됩니다.

{​​
    "scriptFile": "__init__.py",
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​
import logging
import azure.functions as func

def main(myQueueItem) -> None:
    logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)

특성

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)
{

주석

주석 RabbitMQTrigger 을 사용하면 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 RabbitMQTrigger로 설정해야 합니다.
direction in로 설정해야 합니다.
이름 함수 코드에서 큐를 나타내는 변수의 이름입니다.
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를 가리킵니다.

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

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

사용

RabbitMQ 트리거에서 지원되는 매개 변수 형식은 사용되는 C# 모달리티에 따라 다릅니다.

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

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

Java 주석을 참조하세요.

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

Python 예제를 참조하세요.

배달 못한 편지 큐

RabbitMQ 트리거에서 배달 못한 편지 큐 및 교환을 제어하거나 구성할 수 없습니다. 배달 못한 편지 큐를 사용하려면 RabbitMQ의 트리거가 사용하는 큐를 미리 구성합니다. RabbitMQ 설명서를 참조하세요.

host.json 설정

이 섹션에서는 버전 2.x 이상에서 이 바인딩에 사용할 수 있는 구성 설정에 대해 설명합니다. host.json 파일의 설정은 함수 앱 인스턴스의 모든 함수에 적용됩니다. 아래 예제 host.json 파일에는 이 바인딩에 대한 버전 2.x 이상 설정만 포함되어 있습니다. 버전 2.x 이상 버전의 함수 앱 구성 설정에 대한 자세한 내용은 Azure Functions용 host.json 참조를 참조하세요.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            "prefetchCount": 100,
            "queueName": "queue",
            "connectionString": "amqp://user:password@url:port",
            "port": 10
        }
    }
}
속성 기본값 설명
prefetchCount 30 메시지 수신자가 동시에 요청할 수 있고 캐시되는 메시지 수를 가져오거나 설정합니다.
queueName 해당 없음 메시지를 받을 큐의 이름입니다.
connectionString 해당 없음 RabbitMQ 메시지 큐가 연결 문자열. 연결 문자열은 앱 설정을 통하지 않고 여기서 직접 지정됩니다.
port 0 (connectionString을 사용하는 경우 무시됨) 사용된 포트를 가져오거나 설정합니다. 기본값은 rabbitmq 클라이언트의 기본 포트 설정인 5672를 가리키는 0입니다.

로컬 테스트

참고 항목

connectionString은 "hostName", "userName" 및 "password"보다 우선합니다. 모두 설정된 경우 connectionString은 다른 두 가지를 재정의합니다.

연결 문자열 없이 로컬로 테스트하는 경우 host.json의 "rabbitMQ" 섹션에서 해당되는 경우 "hostName" 설정과 "userName" 및 "password"를 설정해야 합니다.

{
    "version": "2.0",
    "extensions": {
        "rabbitMQ": {
            ...
            "hostName": "localhost",
            "username": "userNameSetting",
            "password": "passwordSetting"
        }
    }
}
속성 기본값 설명
hostName 해당 없음 (connectionString을 사용하는 경우 무시됨)
큐의 호스트 이름(예: 10.26.45.210)
userName 해당 없음 (connectionString을 사용하는 경우 무시됨)
큐에 액세스할 이름
password 해당 없음 (connectionString을 사용하는 경우 무시됨)
큐에 액세스하기 위한 암호

런타임 크기 조정 사용

RabbitMQ 트리거가 여러 인스턴스로 확장되려면 런타임 스케일링 모니터링 설정을 사용하도록 설정해야 합니다.

포털에서 이 설정은 함수 앱에 대한 구성>함수 런타임 설정에서 찾을 수 있습니다.

VNETToggle

CLI에서 다음 명령을 사용하여 런타임 확장 모니터링을 사용하도록 설정할 수 있습니다.

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

RabbitMQ 엔드포인트 모니터링

특정 RabbitMQ 엔드포인트의 큐 및 교환을 모니터링하는 방법은 다음과 같습니다.

다음 단계