共用方式為


Azure Functions 的 RabbitMQ 觸發程式概觀

使用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# 函式。
[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觸發程式向外延展至多個實例, 必須啟用運行時間調整監視 設定。

在入口網站中,您可以在函式應用程式的 [組態找到此設定。

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端點的佇列和交換:

相關文章