RabbitMQ kimeneti kötés az Azure Functionshez – áttekintés
Feljegyzés
A RabbitMQ-kötések csak prémium és dedikált csomagokban támogatottak. A használat nem támogatott.
A RabbitMQ kimeneti kötéssel üzeneteket küldhet egy RabbitMQ-üzenetsorba.
A beállítással és a konfigurációval kapcsolatos információkért tekintse meg az áttekintést.
Példa
A C#-függvények a következő C#-módok egyikével hozhatók létre:
- Izolált feldolgozómodell: Lefordított C# függvény, amely a futtatókörnyezettől elkülönített feldolgozói folyamatban fut. Izolált feldolgozói folyamat szükséges az LTS- és nem LTS-verziókon futó C#-függvények támogatásához .NET és .NET-keretrendszer.
- Folyamaton belüli modell: Lefordított C# függvény, amely ugyanabban a folyamatban fut, mint a Functions-futtatókörnyezet.
- C#-szkript: Elsősorban C#-függvények Azure Portalon való létrehozásakor használatos.
Fontos
A folyamaton belüli modell támogatása 2026. november 10-én megszűnik. Erősen javasoljuk, hogy az alkalmazásokat az elkülönített feldolgozói modellbe migrálja a teljes támogatás érdekében.
[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;
}
Az alábbi Java-függvény a @RabbitMQOutput
Java RabbitMQ-típusok megjegyzéseit használja a RabbitMQ-üzenetsor kimeneti kötésének konfigurálásához. A függvény 5 percenként üzenetet küld a RabbitMQ üzenetsornak, amikor egy TimerTrigger aktiválja.
@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");
}
Az alábbi példa egy RabbitMQ kimeneti kötést mutat be egy function.json fájlban, és egy JavaScript-függvényt , amely a kötést használja. A függvény beolvassa az üzenetet egy HTTP-eseményindítóból, és a RabbitMQ-üzenetsorba küldi.
A kötési adatok a function.json fájlban:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Az alábbi JavaScript-kód:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
Az alábbi példa egy RabbitMQ kimeneti kötést mutat be egy function.json fájlban és egy Python-függvényt, amely a kötést használja. A függvény beolvassa az üzenetet egy HTTP-eseményindítóból, és a RabbitMQ-üzenetsorba küldi.
A kötési adatok a function.json fájlban:
{
"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"
}
]
}
A _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'
Attribútumok
A függvény definiálásához a folyamaton belüli és az izolált feldolgozói folyamat C# kódtárai is az attribútumot használják. A C#-szkript ehelyett function.json konfigurációs fájlt használ.
Az attribútum konstruktora a következő paramétereket veszi fel:
Paraméter | Leírás |
---|---|
QueueName | Annak az üzenetsornak a neve, amelyből üzeneteket szeretne fogadni. |
HostName | Az üzenetsor állomásneve, például 10.26.45.210. Használat közben ConnectStringSetting figyelmen kívül hagyva. |
UserNameSetting | Az üzenetsor eléréséhez szükséges felhasználónevet tartalmazó alkalmazásbeállítás neve, például UserNameSetting: "%< UserNameFromSettings >%" . Használat közben ConnectStringSetting figyelmen kívül hagyva. |
PasswordSetting | Az üzenetsor eléréséhez szükséges jelszót tartalmazó alkalmazásbeállítás neve, például PasswordSetting: "%< PasswordFromSettings >%" . Használat közben ConnectStringSetting figyelmen kívül hagyva. |
ConnectionStringSetting | A RabbitMQ üzenetsort tartalmazó alkalmazásbeállítás neve kapcsolati sztring. Az eseményindító nem fog működni, ha közvetlenül egy alkalmazásbeállításon keresztül adja meg a kapcsolati sztring. Ha például beállította a beállítást ConnectionStringSetting: "rabbitMQConnection" , akkor a local.settings.json és a függvényalkalmazásban is szüksége van egy olyan beállításra, mint a "RabbitMQConnection" : "< ActualConnectionstring >" . |
Port | Lekéri vagy beállítja a használt portot. Alapértelmezés szerint 0, amely a RabbitMQ-ügyfél alapértelmezett portbeállítására 5672 mutat. |
A C#-osztálykódtárakban használja a RabbitMQTrigger attribútumot.
Íme egy attribútum egy RabbitMQTrigger
metódus-aláírásban egy izolált feldolgozófolyamat-kódtárhoz:
[Function(nameof(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
Jegyzetek
A RabbitMQOutput
széljegyzet lehetővé teszi, hogy egy RabbitMQ-üzenet létrehozásakor futó függvényt hozzon létre.
A széljegyzet a következő konfigurációs beállításokat támogatja:
Beállítás | Leírás |
---|---|
queueName | Annak az üzenetsornak a neve, amelyből üzeneteket szeretne fogadni. |
hostName | Az üzenetsor állomásneve, például 10.26.45.210. Használat közben ConnectStringSetting figyelmen kívül hagyva. |
userNameSetting | Az üzenetsor eléréséhez szükséges felhasználónevet tartalmazó alkalmazásbeállítás neve, például UserNameSetting: "%< UserNameFromSettings >%" . Használat közben ConnectStringSetting figyelmen kívül hagyva. |
passwordSetting | Az üzenetsor eléréséhez szükséges jelszót tartalmazó alkalmazásbeállítás neve, például PasswordSetting: "%< PasswordFromSettings >%" . Használat közben ConnectStringSetting figyelmen kívül hagyva. |
connectionStringSetting | A RabbitMQ üzenetsort tartalmazó alkalmazásbeállítás neve kapcsolati sztring. Az eseményindító nem fog működni, ha közvetlenül egy alkalmazásbeállításon keresztül adja meg a kapcsolati sztring. Ha például beállította a beállítást ConnectionStringSetting: "rabbitMQConnection" , akkor a local.settings.json és a függvényalkalmazásban is szüksége van egy olyan beállításra, mint a "RabbitMQConnection" : "< ActualConnectionstring >" . |
kikötő | Lekéri vagy beállítja a használt portot. Alapértelmezés szerint 0, amely a RabbitMQ-ügyfél alapértelmezett portbeállítására 5672 mutat. |
További részletekért tekintse meg a kimeneti kötés példáját .
Konfiguráció
Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti.
function.json tulajdonság | Leírás |
---|---|
type | A beállításnak a RabbitMQ következőnek kell lennie: . |
direction | A beállításnak a out következőnek kell lennie: . |
név | Annak a változónak a neve, amely az üzenetsort jelöli a függvénykódban. |
queueName | Annak az üzenetsornak a neve, amelybe üzeneteket szeretne küldeni. |
hostName | Az üzenetsor állomásneve, például 10.26.45.210. Használat közben connectStringSetting figyelmen kívül hagyva. |
userName | Az üzenetsor eléréséhez szükséges felhasználónevet tartalmazó alkalmazásbeállítás neve, például: UserNameSetting: "< UserNameFromSettings >". Használat közben connectStringSetting figyelmen kívül hagyva. |
jelszó | Az üzenetsor eléréséhez szükséges jelszót tartalmazó alkalmazásbeállítás neve, például: UserNameSetting: "< UserNameFromSettings >". Használat közben connectStringSetting figyelmen kívül hagyva. |
connectionStringSetting | A RabbitMQ üzenetsort tartalmazó alkalmazásbeállítás neve kapcsolati sztring. Az eseményindító nem fog működni, ha a kapcsolati sztring közvetlenül adja meg, nem pedig egy alkalmazásbeállításon keresztül a következőbenlocal.settings.json : . Ha például be van állítva connectionStringSetting: "rabbitMQConnection" , akkor a local.settings.json és a függvényalkalmazásban is szükség van egy olyan beállításra, mint a "rabbitMQConnection" : "< ActualConnectionstring >" . |
kikötő | Lekéri vagy beállítja a használt portot. Alapértelmezés szerint 0, amely a RabbitMQ-ügyfél alapértelmezett portbeállítására 5672 mutat. |
Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues
.
A teljes példákért tekintse meg a Példa szakaszt .
Használat
A RabbitMQ-eseményindító által támogatott paramétertípus a Functions futtatókörnyezet verziójától, a bővítménycsomag verziójától és a használt C# módtól függ.
A RabbitMQ-kötések jelenleg csak sztring- és szerializálható objektumtípusokat támogatnak, ha izolált feldolgozófolyamatban futnak.
A teljes példáért tekintse meg a C# példát.
A kimeneti kötéshez használja a következő paramétertípusokat:
byte[]
– Ha a paraméter értéke null, amikor a függvény kilép, a Functions nem hoz létre üzenetet.string
– Ha a paraméter értéke null, amikor a függvény kilép, a Functions nem hoz létre üzenetet.POJO
– Ha a paraméter értéke nem Java-objektumként van formázva, hibaüzenet jelenik meg.
Az üzenetsor-üzenet azon keresztül context.bindings.<NAME>
érhető el, ahol <NAME>
egyezik a function.json definiált névvel. Ha a hasznos adat JSON, az érték deszerializálva lesz egy objektumba.