使用 RabbitMQ 输出绑定将消息发送到 RabbitMQ 队列。
注释
RabbitMQ 绑定仅在弹性高级版和专用(App 服务)计划中完全受支持。 尚不支持弹性消耗 和 消耗 计划。
Azure Functions v1.x 运行时不支持 RabbitMQ 绑定。
若要了解设置和配置详细信息,请参阅概述。
示例:
可使用以下 C# 模式之一来创建 C# 函数:
- 进程内类库:编译的 C# 函数,该函数在与 Functions 运行时相同的进程中运行。
- 独立工作进程类库:编译的 C# 函数,该函数在独立于运行时的工作进程中运行。 需要独立工作进程才能支持在 LTS 和非 LTS 版 .NET 和 .NET Framework 上运行的 C# 函数。
- C# 脚本:主要在 Azure 门户中创建 C# 函数时使用。
重要
对进程内模型的支持将于 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 函数使用 @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'
特性
隔离的工作进程和进程内 C# 库都使用属性来定义写入 RabbitMQ 队列的输出绑定。
构造 RabbitMQOutputAttribute
函数接受以下参数:
参数 | DESCRIPTION |
---|---|
队列名称 | 从中接收消息的队列的名称。 |
HostName | 此参数不再受支持,将被忽略。 它将在未来版本中删除。 |
ConnectionStringSetting | 包含 RabbitMQ 服务器的连接字符串的应用设置的名称。 此设置仅采用应用设置密钥名称,不能直接设置连接字符串值。 有关详细信息,请参阅 连接。 |
UserNameSetting | 此参数不再受支持,将被忽略。 它将在未来版本中删除。 |
PasswordSetting | 此参数不再受支持,将被忽略。 它将在未来版本中删除。 |
端口 | 获取或设置所使用的端口。 默认为 0,它指向 RabbitMQ 客户端的默认端口设置 5672 。 |
DisableCertificateValidation | 获取或设置一个值,该值指示是否应禁用证书验证。 不建议用于生产。 禁用 SSL 时不适用。 |
批注
使用 RabbitMQOutput
注释,你’可以创建在创建 RabbitMQ 消息时要运行的函数。
配置
下表解释了在 function.json 文件中设置的绑定配置属性。
“function.json”属性 | DESCRIPTION |
---|---|
类型 | 必须设置为 RabbitMQ 。 |
方向 | 必须设置为 out 。 |
名字 | 表示函数代码中的队列的变量的名称。 |
queueName | 要向其发送消息的队列的名称。 |
connectionStringSetting | 包含 RabbitMQ 服务器的连接字符串的应用设置的名称。 此设置仅采用应用设置密钥名称,不能直接设置连接字符串值。 有关详细信息,请参阅 连接。 |
disableCertificateValidation | 获取或设置一个值,该值指示是否应禁用证书验证。 不建议用于生产。 禁用 SSL 时不适用。 |
有关完整示例,请参阅示例部分。
用法
RabbitMQ 触发器支持的参数类型取决于 Functions 运行时版本、扩展包版本以及使用的 C# 模态。
对输出绑定使用以下参数类型:
-
byte[]
- 如果函数退出时参数值为 null,Functions 不创建消息。 -
string
- 如果函数退出时参数值为 null,Functions 不创建消息。 -
POJO
- 如果参数值未格式化为 Java 对象,则会收到错误。
队列消息可通过 context.bindings.<NAME>
获得,其中 <NAME>
与 function.json 中定义的名称匹配。 如果有效负载为 JSON,该值将反序列化为对象。
连接
重要
RabbitMQ 绑定不支持Microsoft Entra 身份验证和托管标识。 可以使用 Azure 密钥库集中管理 RabbitMQ 连接字符串。 若要了解详细信息,请参阅 “管理连接”。
从扩展版本 2.x 开始,hostName
userNameSetting
passwordSetting
不再支持定义与 RabbitMQ 服务器的连接。 必须改用 connectionStringSetting
。
该 connectionStringSetting
属性只能接受应用设置中的键值对的名称。 不能直接在绑定中设置连接字符串值。
例如,在绑定定义中已设置为connectionStringSetting
rabbitMQConnection
时,函数应用必须具有一个命名rabbitMQConnection
的应用设置,该设置返回连接值(例如amqp://myuser:***@contoso.rabbitmq.example.com:5672
或 Azure Key Vault 引用)。
在本地运行时,还必须具有 connectionStringSetting
文件中定义的键值。 否则,应用无法从本地计算机连接到服务,并发生错误。