다음을 통해 공유


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 형식@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 바인딩은 type로 설정된 RabbitMQTrigger에서 정의됩니다.

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

PowerShell 예제는 현재 사용할 수 없습니다.

특성

격리된 작업자 프로세스In-process C# 라이브러리는 모두 특성의 특정 속성이 확장 버전에 따라 달라지는 함수를 정의하는 데 사용합니다RabbitMQTriggerAttribute.

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

매개 변수 설명
큐이름 메시지를 받을 큐의 이름입니다.
HostName 이 매개 변수는 더 이상 지원되지 않으며 무시됩니다. 이후 버전에서 제거됩니다.
ConnectionStringSetting RabbitMQ 서버에 대한 연결 문자열을 포함하는 앱 설정의 이름입니다. 이 설정은 앱 설정 키 이름만 사용하므로 연결 문자열 값을 직접 설정할 수 없습니다. 자세한 내용은 연결을 참조하세요.
사용자 이름 설정 이 매개 변수는 더 이상 지원되지 않으며 무시됩니다. 이후 버전에서 제거됩니다.
비밀번호 설정 이 매개 변수는 더 이상 지원되지 않으며 무시됩니다. 이후 버전에서 제거됩니다.
포트 사용된 포트를 가져오거나 설정합니다. 기본값은 0이며 RabbitMQ 클라이언트의 기본 포트 설정인 5672를 가리킵니다.

주석

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

주석은 다음 구성 옵션을 지원합니다.

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

구성

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

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

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

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

사용

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

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

큐 메시지는 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 도 있어야 합니다. 그렇지 않으면 앱이 로컬 컴퓨터에서 서비스에 연결할 수 없으며 오류가 발생합니다.

배달 못한 편지 큐

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

런타임 크기 조정 사용

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

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

VNETToggle

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

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

RabbitMQ 엔드포인트 모니터링

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

관련 문서