使用RabbitMQ觸發程式來回應RabbitMQ佇列中的訊息。
注意
RabbitMQ 系結只有在彈性進階和專用 (App Service) 方案上才完全支援。 尚未支援彈性取用 和 取用 方案。
Azure Functions v1.x 運行時間不支援 RabbitMQ 系結。
如需安裝和組態詳細數據的詳細資訊,請參閱概 觀。
範例
您可以使用下列其中一種 C# 模式來建立 C# 函式:
- 隔離的背景工作模型:在與運行時間隔離的背景工作進程中執行的已編譯 C# 函式。 需要隔離的背景工作進程,才能支援在 .NET 和 .NET Framework 的長期支援 (LTS) 和非 LTS 版本上執行的 C# 函式。
- 同進程模型:在與 Azure Functions 運行時間相同的進程中執行的已編譯 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 函式會使用 @RabbitMQTrigger Java RabbitMQ 類型的註釋來描述 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 系結定義於類型設定為 的function.jsonRabbitMQTrigger中。
{
"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 範例目前無法使用。
屬性
隔離背景工作進程和同進程 C# 程式庫都用RabbitMQTriggerAttribute來定義函式,其中屬性的特定屬性取決於延伸模組版本。
屬性的建構函式接受下列參數:
| 參數 | 描述 |
|---|---|
| 佇列名稱 | 要接收訊息的佇列名稱。 |
| HostName | 此參數不再受支援,且會忽略。 它將在未來的版本中被刪除。 |
| ConnectionStringSetting | 包含 RabbitMQ 伺服器連接字串的應用程式設定名稱。 此設定只會採用應用程式設定索引鍵名稱,您無法直接設定連接字串值。 如需詳細資訊,請參閱 連線。 |
| UserNameSetting | 此參數不再受支援,且會忽略。 它將在未來的版本中被刪除。 |
| PasswordSetting | 此參數不再受支援,且會忽略。 它將在未來的版本中被刪除。 |
| 通訊埠 | 取得或設定使用的埠。 默認為 0,這會指向 RabbitMQ 用戶端的預設埠設定 5672。 |
註釋
批 RabbitMQTrigger 注可讓您建立在建立RabbitMQ訊息時執行的函式。
註解支援下列組態選項:
| 參數 | 描述 |
|---|---|
| queueName | 要接收訊息的佇列名稱。 |
| connectionStringSetting | 包含 RabbitMQ 伺服器連接字串的應用程式設定名稱。 此設定只會採用應用程式設定索引鍵名稱,您無法直接設定連接字串值。 如需詳細資訊,請參閱 連線。 |
| disableCertificate驗證 | 布林值,可設定為 true 指出應停用憑證驗證。 預設值為 false。 不建議用於生產。 停用 SSL 時不適用。 |
組態
下表說明您在 function.json 檔案中設定的繫結設定屬性。
| function.json 屬性 | 描述 |
|---|---|
| 類型 | 必須設定為 RabbitMQTrigger。 |
| 方向 | 必須設定為 in。 |
| 名字 | 代表函式程式碼中佇列的變數名稱。 |
| queueName | 要接收訊息的佇列名稱。 |
| connectionStringSetting | 包含 RabbitMQ 伺服器連接字串的應用程式設定名稱。 此設定只會採用應用程式設定索引鍵名稱,您無法直接設定連接字串值。 如需詳細資訊,請參閱 連線。 |
| disableCertificate驗證 | 布林值,可設定為 true 指出應停用憑證驗證。 預設值為 false。 不建議用於生產。 停用 SSL 時不適用。 |
當您在本機開發時,請在集合中的 local.settings.json 檔案Values中新增應用程式設定。
如需完整範例,請參閱範例一節。
使用方式
RabbitMQ 觸發程式所支援的參數類型取決於所使用的 C# 形式。
RabbitMQ 系結目前僅支援在隔離進程中執行時的字串和可串行化物件類型。
佇列訊息可透過 context.bindings.<NAME> 符合function.json中定義的名稱來 <NAME> 取得。 如果承載為 JSON,該值會還原串行化為 物件。
連結
重要
RabbitMQ 系結不支援Microsoft Entra 驗證和受控識別。 您可以使用 Azure 金鑰保存庫 集中管理 RabbitMQ 連接字串。 若要深入瞭解,請參閱 管理連線。
從延伸模組 hostName的 2.x 版開始,不再支援 、 userNameSetting和 來 passwordSetting 定義與 RabbitMQ 伺服器的連線。 您必須改用 connectionStringSetting。
屬性 connectionStringSetting 只能接受應用程式設定中的索引鍵值組名稱。 您無法直接在繫結中設定連接字串值。
例如,當您在繫結定義中設定 connectionStringSetting 為 時 rabbitMQConnection ,函式應用程式必須具有名為 rabbitMQConnection 的應用程式設定,以傳回連線值,例如 amqp://myuser:***@contoso.rabbitmq.example.com:5672或 Azure 金鑰保存庫參考。
在本機執行時,您也必須在 local.settings.json 檔案中定義 的connectionStringSetting索引鍵值。 否則,您的應用程式無法從本機電腦連線到服務,並發生錯誤。
寄不出的信件佇列
無法從 RabbitMQ 觸發程式控制或設定寄不出的信件佇列和交換。 若要使用寄不出的信件佇列,請在 RabbitMQ 中預先設定觸發程式所使用的佇列。 請參閱RabbitMQ檔。
啟用運行時間調整
為了讓RabbitMQ觸發程式向外延展至多個實例, 必須啟用運行時間調整監視 設定。
在入口網站中,您可以在函式應用程式的 [組態找到此設定。
在 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端點的佇列和交換:
- 啟用 RabbitMQ 管理外掛程式
- 瀏覽並
http://{node-hostname}:15672使用您的使用者名稱和密碼登入。