共用方式為


Azure Functions 的 RabbitMQ 輸出系結概觀

注意

只有 Premium 和 Dedicated 方案才完全支援 RabbitMQ 系結。 不支援取用。

使用RabbitMQ輸出系結將訊息傳送至RabbitMQ佇列。

如需安裝和組態詳細數據的詳細資訊,請參閱概

範例

您可以使用下列其中一種 C# 模式來建立 C# 函式:

  • 隔離的背景工作模型:在與運行時間隔離的背景工作進程中執行的已編譯 C# 函式。 需要隔離的背景工作進程,才能支援在 LTS 和非 LTS 版本 .NET 和 .NET Framework 上執行的 C# 函式。
  • 同進程模型:在與 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# 連結庫都會使用 屬性來定義函式。 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)
{

註釋

RabbitMQOutput 注可讓您建立在建立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 必須設定為 RabbitMQ
direction 必須設定為 out
name 代表函式程式碼中佇列的變數名稱。
queueName 要傳送訊息的佇列名稱。
hostName 佇列的主機名,例如 10.26.45.210。 使用 connectStringSetting時忽略。
userName 包含要存取佇列之使用者名稱的應用程式設定名稱,例如 UserNameSetting:“< UserNameFromSettings >”。 使用 connectStringSetting時忽略。
password 包含存取佇列之密碼的應用程式設定名稱,例如 UserNameSetting:“< UserNameFromSettings >”。 使用 connectStringSetting時忽略。
connectionStringSetting 包含 RabbitMQ 消息佇列的應用程式設定名稱 連接字串。 當您直接指定 連接字串 而不是透過 中的local.settings.json應用程式設定時,觸發程式將無法運作。 例如,當您同時在 local.settings.json 和函式應用程式中設定 connectionStringSetting: "rabbitMQConnection" 時,您需要像 這樣的"rabbitMQConnection" : "< ActualConnectionstring >"設定。
port 取得或設定使用的埠。 默認為 0,這會指向 RabbitMQ 用戶端的預設埠設定 5672

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

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

使用方式

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

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

如需完整的範例,請參閱 C# 範例

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

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

佇列訊息可透過 context.bindings.<NAME> 符合function.json中定義的名稱來 <NAME> 取得。 如果承載為 JSON,該值會還原串行化為 物件。

請參閱 Python 範例

下一步