共用方式為


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 函式會使用 @RabbitMQOutput Java RabbitMQ 類型的註釋來描述 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建構函式接受下列參數:

參數 描述
佇列名稱 要接收訊息的佇列名稱。
HostName 此參數不再受支援,且會忽略。 它將在未來的版本中被刪除。
ConnectionStringSetting 包含 RabbitMQ 伺服器連接字串的應用程式設定名稱。 此設定只會採用應用程式設定索引鍵名稱,您無法直接設定連接字串值。 如需詳細資訊,請參閱 連線
UserNameSetting 此參數不再受支援,且會忽略。 它將在未來的版本中被刪除。
PasswordSetting 此參數不再受支援,且會忽略。 它將在未來的版本中被刪除。
通訊埠 取得或設定使用的埠。 默認為 0,這會指向 RabbitMQ 用戶端的預設埠設定 5672
DisableCertificate驗證 取得或設定值,指出是否應該停用憑證驗證。 不建議用於生產。 停用 SSL 時不適用。

註釋

RabbitMQOutput 注可讓您建立在建立RabbitMQ訊息時執行的函式。

註解支援下列組態設定:

設定 描述
queueName 要接收訊息的佇列名稱。
connectionStringSetting 包含 RabbitMQ 伺服器連接字串的應用程式設定名稱。 此設定只會採用應用程式設定索引鍵名稱,您無法直接設定連接字串值。 如需詳細資訊,請參閱 連線
disableCertificate驗證 取得或設定值,指出是否應該停用憑證驗證。 不建議用於生產。 停用 SSL 時不適用。

組態

下表說明您在 function.json 檔案中設定的繫結設定屬性。

function.json 屬性 描述
類型 必須設定為 RabbitMQ
方向 必須設定為 out
名字 代表函式程式碼中佇列的變數名稱。
queueName 要傳送訊息的佇列名稱。
connectionStringSetting 包含 RabbitMQ 伺服器連接字串的應用程式設定名稱。 此設定只會採用應用程式設定索引鍵名稱,您無法直接設定連接字串值。 如需詳細資訊,請參閱 連線
disableCertificate驗證 取得或設定值,指出是否應該停用憑證驗證。 不建議用於生產。 停用 SSL 時不適用。

當您在本機開發時,請在集合中的 local.settings.json 檔案Values中新增應用程式設定。

如需完整範例,請參閱範例一節。

使用方式

RabbitMQ 觸發程式所支援的參數類型取決於 Functions 運行時間版本、擴充套件版本,以及所使用的 C# 形式。

RabbitMQ 系結目前僅支援在隔離背景工作進程中執行時的字串和可串行化物件類型。

針對輸出係結使用下列參數類型:

  • byte[] - 如果函式結束時參數值為 Null,則 Functions 不會建立訊息。
  • string - 如果函式結束時參數值為 Null,則 Functions 不會建立訊息。
  • POJO - 如果參數值未格式化為 Java 物件,則會收到錯誤。

佇列訊息可透過 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索引鍵值。 否則,您的應用程式無法從本機電腦連線到服務,並發生錯誤。