Azure Functions 的 RabbitMQ 輸出系結概觀
注意
只有 Premium 和 Dedicated 方案才完全支援 RabbitMQ 系結。 不支援取用。
使用RabbitMQ輸出系結將訊息傳送至RabbitMQ佇列。
如需安裝和組態詳細數據的詳細資訊,請參閱概 觀。
範例
您可以使用下列其中一種 C# 模式來建立 C# 函式:
- 隔離的背景工作模型:在與運行時間隔離的背景工作進程中執行的已編譯 C# 函式。 需要隔離的背景工作進程,才能支援在 LTS 和非 LTS 版本 .NET 和 .NET Framework 上執行的 C# 函式。
- 同進程模型:在與 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 函式會使用 @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 範例。