Azure Functions에 대한 RabbitMQ 트리거 개요
참고 항목
RabbitMQ 바인딩은 프리미엄 및 전용 계획에서만 완전히 지원됩니다. 사용은 지원되지 않습니다.
RabbitMQ 트리거를 사용하여 RabbitMQ 큐의 메시지에 응답하세요.
설정 및 구성 세부 정보에 대한 자세한 내용은 개요를 참조하세요.
예시
C# 함수는 다음 C# 모드 중 하나를 사용하여 만들 수 있습니다.
- 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다.
- In Process 모델: Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다.
- C# 스크립트: Azure Portal에서 C# 함수를 만들 때 주로 사용됩니다.
Important
In Process 모델에 대한 지원은 2026년 11월 10일에 종료됩니다. 전체 지원을 위해 앱을 격리된 작업자 모델로 마이그레이션하는 것이 좋습니다.
[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
로 설정된 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 트리거가 여러 인스턴스로 확장되려면 런타임 스케일링 모니터링 설정을 사용하도록 설정해야 합니다.
포털에서 이 설정은 함수 앱에 대한 구성>함수 런타임 설정에서 찾을 수 있습니다.
CLI에서 다음 명령을 사용하여 런타임 확장 모니터링을 사용하도록 설정할 수 있습니다.
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
RabbitMQ 엔드포인트 모니터링
특정 RabbitMQ 엔드포인트의 큐 및 교환을 모니터링하는 방법은 다음과 같습니다.
- RabbitMQ 관리 플러그 인 사용
- http://{node-hostname}:15672로 이동하여 사용자 이름 및 암호를 사용하여 로그인합니다.