Kapcsolódó üzenetek küldése sorrendben Sequential Convoyjal az Azure Logic Apps és az Azure Service Bus használatával
A következőkre vonatkozik: Azure Logic Apps (Használat)
Ha korrelált üzeneteket kell küldenie egy adott sorrendben, az Azure Service Bus-összekötő használatával követheti a szekvenciális konvojmintát az Azure Logic Apps használatakor. A korrelált üzeneteknek van egy tulajdonsága, amely meghatározza az üzenetek közötti kapcsolatot, például a Service Bus munkamenetének azonosítóját.
Tegyük fel például, hogy egy "1. munkamenet" nevű munkamenethez 10 üzenete van, és egy "2. munkamenet" nevű munkamenethez 5 üzenete van, amelyek mindegyike ugyanarra a Service Bus-üzenetsorra kerül. Létrehozhat egy logikai alkalmazást, amely az üzenetsorból származó üzeneteket dolgozza fel, így az "1. munkamenet" összes üzenetét egyetlen eseményindító futtatja, a "2. munkamenet" összes üzenetét pedig a következő eseményindító-futtatás kezeli.
Ez a cikk bemutatja, hogyan hozhat létre olyan logikai alkalmazást, amely ezt a mintát valósítja meg a rendelési sorrendben történő kézbesítéssel service bus-munkamenetek sablon használatával. Ez a sablon egy logikai alkalmazás munkafolyamatát határozza meg, amely a Service Bus-összekötő Amikor üzenet érkezik egy üzenetsorba (betekintő-zárolás) eseményindítójával kezdődik, amely üzeneteket fogad egy Service Bus-üzenetsorból. A logikai alkalmazás az alábbi magas szintű lépéseket hajtja végre:
Munkamenet inicializálása a Service Bus-üzenetsorból beolvasott üzenet alapján.
Az aktuális munkafolyamat-futtatás során olvassa el és dolgozza fel az üzenetsor ugyanazon munkamenetének összes üzenetét.
A sablon JSON-fájljának áttekintéséhez tekintse át a GitHub: service-bus-sessions.json című témakört.
További információ: Szekvenciális konvojminta – Azure Architecture Cloud Design Patterns.
Előfeltételek
Azure-előfizetés. Ha még nincs előfizetése, regisztráljon egy ingyenes Azure-fiókra.
Egy Service Bus-névtér és egy Service Bus-üzenetsor, amely egy üzenetkezelési entitás, amelyet a logikai alkalmazásban fog használni. Ezeknek az elemeknek és a logikai alkalmazásnak ugyanazt az Azure-előfizetést kell használnia. Az üzenetsor létrehozásakor győződjön meg arról, hogy a munkamenetek engedélyezése lehetőséget választja. Ha nem rendelkezik ezekkel az elemekkel, megtudhatja , hogyan hozhatja létre Service Bus-névterét és üzenetsorát.
Fontos
Körültekintően válassza ki az azonos összekötőtípusú eseményindítót és műveletet is, és használja őket ugyanazzal az entitással, például üzenetsor- vagy témakör-előfizetéssel való együttműködésre. Ez a kombináció végtelen hurkot hozhat létre, amely egy soha véget nem érő logikai alkalmazást eredményez.
Alapvető ismeretek a logikai alkalmazások létrehozásáról. Ha még nem ismerkedik az Azure Logic Appsszel, próbálja ki azt a rövid útmutatót, amely egy példa fogyasztási logikai alkalmazás munkafolyamatát hozza létre a több-bérlős Azure Logic Appsben.
A Service Bus-névtérhez való hozzáférés ellenőrzése
Ha nem biztos abban, hogy a logikai alkalmazás rendelkezik-e engedélyekkel a Service Bus-névtér eléréséhez, erősítse meg ezeket az engedélyeket.
Jelentkezzen be az Azure Portalra. Keresse meg és válassza ki a Service Bus-névteret.
A névtér menü Beállítások területén válassza a Megosztott hozzáférési szabályzatok lehetőséget. A Jogcímek csoportban ellenőrizze, hogy rendelkezik-e a névtér kezelésével kapcsolatos engedélyekkel.
Most szerezze be a Service Bus-névtér kapcsolati sztring. Ezt a sztringet később használhatja, amikor kapcsolatot hoz létre a névtérrel a logikai alkalmazásból.
A Megosztott hozzáférési szabályzatok panel Házirend csoportjában válassza a RootManageSharedAccessKey lehetőséget.
Az elsődleges kapcsolati sztring mellett válassza a másolás gombot. Mentse a kapcsolati sztring későbbi használatra.
Tipp.
Annak ellenőrzéséhez, hogy a kapcsolati sztring társítva van-e a Service Bus-névtérhez vagy egy üzenetkezelő entitáshoz, például üzenetsorhoz, keresse meg a paramétert a
EntityPath
kapcsolati sztring. Ha ezt a paramétert találja, a kapcsolati sztring egy adott entitáshoz tartozik, és nem a megfelelő sztring a logikai alkalmazáshoz.
Logikai alkalmazás létrehozása
Ebben a szakaszban egy logikai alkalmazást hoz létre a rendelési sorrendben történő kézbesítés korrelált használatával Service Bus-munkamenetek sablon használatával, amely tartalmazza a munkafolyamat-minta implementálására szolgáló eseményindítót és műveleteket. Emellett létre kell hoznia egy kapcsolatot a Service Bus-névtérrel, és meg kell adnia a használni kívánt Service Bus-üzenetsor nevét.
Az Azure Portalon hozzon létre egy üres logikai alkalmazást. Az Azure kezdőlapján válassza az Erőforrás-integrációs>>logikai alkalmazás létrehozása lehetőséget.
A sablongyűjtemény megjelenése után görgessen végig a videón és a gyakori eseményindítók szakaszain. A Sablonok szakaszban válassza ki azt a sablont, amely a service bus-munkamenetek használatával korrelál a rendelésen belüli kézbesítéssel.
Amikor megjelenik a megerősítést kérő mező, válassza a Sablon használata lehetőséget.
A Logic App Designer Service Bus alakzatában válassza a Folytatás lehetőséget, majd az alakzatban megjelenő pluszjelet (+).
Most hozzon létre egy Service Bus-kapcsolatot a következő lehetőségek választásával:
A Service Bus-névtérből korábban másolt kapcsolati sztring használatához kövesse az alábbi lépéseket:
Válassza a Kapcsolatadatok manuális megadása lehetőséget.
A kapcsolat neveként adja meg a kapcsolat nevét. Kapcsolati sztring esetén illessze be a névteret kapcsolati sztring, és válassza a Létrehozás lehetőséget, például:
Tipp.
Ha nem rendelkezik ezzel a kapcsolati sztring, megtudhatja, hogyan keresheti meg és másolhatja a Service Bus-névteret kapcsolati sztring.
A Service Bus-névtér aktuális Azure-előfizetésből való kiválasztásához kövesse az alábbi lépéseket:
A kapcsolat neveként adja meg a kapcsolat nevét. Service Bus-névtér esetén válassza ki a Service Bus-névteret, például:
Amikor megjelenik a következő panel, válassza ki a Service Bus-szabályzatot, és válassza a Létrehozás lehetőséget.
Ha végzett, válassza a Folytatás lehetőséget.
A Logic App Designer most a Service Bus-munkamenetek sablonjával jeleníti meg a korrelált rendelésközi kézbesítést, amely egy előre kitöltött munkafolyamatot tartalmaz egy eseményindítóval és műveletekkel, köztük két hatókört, amelyek a
Try-Catch
mintát követő hibakezelést implementálják.
Most már többet is megtudhat a sablon eseményindítójáról és műveleteiről, vagy előrelépve megadhatja a logikai alkalmazássablon értékeit.
Sablon összefoglalása
Az alábbiakban a Service Bus-munkamenetek sablonnal összekapcsolt rendelési kézbesítés felső szintű munkafolyamata látható, amikor a részletek összecsukva vannak:
Név | Leírás |
---|---|
When a message is received in a queue (peek-lock) |
A megadott ismétlődés alapján ez a Service Bus-eseményindító ellenőrzi a megadott Service Bus-üzenetsort minden üzenetnél. Ha egy üzenet szerepel az üzenetsorban, az eseményindító aktiválódik, amely létrehoz és futtat egy munkafolyamat-példányt. A betekintő-zárolás kifejezés azt jelenti, hogy az eseményindító kérést küld egy üzenet lekérésére az üzenetsorból. Ha létezik üzenet, az eseményindító lekéri és zárolja az üzenetet, hogy a zárolási időszak lejártáig ne történjen más feldolgozás az üzeneten. A részletekért inicializálja a munkamenetet. |
Init isDone |
Ez az inicializálási változóművelet létrehoz egy logikai változót, amely a következő feltételek teljesülése esetén van beállítvafalse :– A munkamenetben nem olvasható több üzenet. További információ: A munkamenet inicializálása. |
Try |
Ez a hatókörművelet az üzenetek feldolgozásához futtatott műveleteket tartalmazza. Ha probléma merül fel a Try hatókörben, az azt követő Catch hatókörművelet kezeli ezt a problémát. További információ: "Kipróbálás" hatókör. |
Catch |
Ez a hatókörművelet azokat a műveleteket tartalmazza, amelyek akkor futnak, ha probléma merül fel az előző Try hatókörben. További információ: "Catch" hatókör. |
"Kipróbálás" hatókör
A hatókörművelet legfelső szintű folyamata Try
a részletek összecsukásakor:
Név | Leírás |
---|---|
Send initial message to topic |
Ezt a műveletet lecserélheti arra a műveletre, amelyet az üzenetsor munkamenetének első üzenetét kezelni szeretne. A munkamenet azonosítója határozza meg a munkamenetet. Ebben a sablonban egy Service Bus-művelet elküldi az első üzenetet egy Service Bus-témakörnek. További részletekért lásd : A kezdeti üzenet kezelése. |
(párhuzamos ág) | Ez a párhuzamos ágművelet két elérési utat hoz létre: - 1. ág: Folytassa az üzenet feldolgozását. További információ: 1. ág: A kezdeti üzenet befejezése az üzenetsorban. - 2. ág: Hagyja abba az üzenetet, ha valami nem sikerül, és engedje fel a felvételt egy másik trigger futtatásával. További információ: 2. ág: A kezdeti üzenet feladása az üzenetsorból. Mindkét elérési út később csatlakozik az üzenetsor záró munkamenetéhez, és a következő sorban ismertetett sikeres műveletet hajtja végre. |
Close a session in a queue and succeed |
Ez a Service Bus-művelet csatlakozik a korábban leírt ágakhoz, és bezárja a munkamenetet az üzenetsorban az alábbi események bármelyike után: – A munkafolyamat befejezi az üzenetsorban elérhető üzenetek feldolgozását. További részletekért lásd : Munkamenet bezárása az üzenetsorban, és sikeres. |
1. ág: Az üzenetsor kezdeti üzenetének befejezése
Név | Leírás |
---|---|
Complete initial message in queue |
Ez a Service Bus-művelet befejezettként jelöli a sikeresen lekért üzenetet, és eltávolítja az üzenetet az üzenetsorból az újrafeldolgozás megakadályozása érdekében. További részletekért lásd : A kezdeti üzenet kezelése. |
While there are more messages for the session in the queue |
Ez a amíg a hurok továbbra is üzeneteket kap, amíg az üzenetek léteznek, vagy amíg egy óra el nem telik. Az ebben a ciklusban található műveletekkel kapcsolatos további információkért lásd : Bár a munkamenetnek több üzenete van az üzenetsorban. |
Set isDone = true |
Ha nincs több üzenet, ez a változóművelet a következőre true van állítvaisDone : . |
Renew session lock until cancelled |
Ez a amíg a hurok gondoskodik arról, hogy a munkamenet-zárolást ez a logikai alkalmazás megtartsa, amíg az üzenetek léteznek, vagy amíg egy óra el nem telik. A ciklus műveleteiről további információt a munkamenet-zárolás megújítása a megszakításig című témakörben talál. |
2. ág: A kezdeti üzenet elhagyása az üzenetsorból
Ha az első üzenetet kezelő művelet meghiúsul, a Service Bus művelet, a kezdeti üzenet feladása az üzenetsorból, egy másik munkafolyamat-példány üzenetének kiadása a felvételhez és a feldolgozáshoz. További részletekért lásd : A kezdeti üzenet kezelése.
"Catch" hatókör
Ha a Try
hatókör műveletei sikertelenek, a logikai alkalmazásnak továbbra is be kell zárnia a munkamenetet. A Catch
hatókörművelet akkor fut, amikor a Try
hatókörművelet állapota Failed
Skipped
, vagy TimedOut
. A hatókör egy hibaüzenetet ad vissza, amely tartalmazza a probléma helyét tartalmazó munkamenet-azonosítót, és leállítja a logikai alkalmazást.
A hatókörművelet legfelső szintű folyamata Catch
a részletek összecsukásakor:
Név | Leírás |
---|---|
Close a session in a queue and fail |
Ez a Service Bus-művelet bezárja a munkamenetet az üzenetsorban, hogy a munkamenet-zárolás ne maradjon nyitva. Részletekért lásd : Munkamenet bezárása egy üzenetsorban, és sikertelen. |
Find failure msg from 'Try' block |
Ez a Szűrőtömb művelet létrehoz egy tömböt a hatókörben lévő Try összes művelet bemeneteiből és kimeneteiből a megadott feltételek alapján. Ebben az esetben ez a művelet az állapotot eredményező Failed műveletek kimeneteit adja vissza. További információt a "Try" blokk hibakeresési msg-jének megkeresése című témakörben talál. |
Select error details |
Ez a kijelölési művelet létrehoz egy tömböt, amely JSON-objektumokat tartalmaz a megadott feltételek alapján. Ezek a JSON-objektumok az előző művelet által létrehozott tömb értékeiből épülnek fel. Find failure msg from 'Try' block Ebben az esetben ez a művelet egy tömböt ad vissza, amely az előző műveletből visszaadott hibaadatokból létrehozott JSON-objektumot tartalmaz. A részletekért lásd a Hiba részleteinek kiválasztása című témakört. |
Terminate |
Ez a művelet leállítja a munkafolyamat futtatását, megszakítja a folyamatban lévő műveleteket, kihagyja a fennmaradó műveleteket, és visszaadja a megadott állapotot, a munkamenet azonosítóját és a Select error details műveletből eredő hibát. További részletekért lásd: A logikai alkalmazás leállítja a elemet. |
A sablon befejezése
Ha service bus-munkamenetek sablonnal szeretné megadni az eseményindító és a műveletek értékeit a rendelésközi kézbesítéshez, kövesse az alábbi lépéseket. A logikai alkalmazás mentése előtt meg kell adnia az összes szükséges értéket, amelyeket csillag (*csillag) jelöl.
A munkamenet inicializálása
Ha üzenet érkezik egy üzenetsorba (peek-lock) eseményindítóban, adja meg ezt az információt, hogy a sablon inicializálhassa a munkamenetet a Munkamenet-azonosító tulajdonság használatával, például:
Feljegyzés
Kezdetben a lekérdezési időköz három percre van beállítva, hogy a logikai alkalmazás ne fusson gyakrabban a vártnál, és váratlan számlázási díjakat eredményezzen. Ideális esetben állítsa az időközt és a gyakoriságot 30 másodpercre, hogy a logikai alkalmazás azonnal aktiválódik egy üzenet érkezésekor.
Tulajdonság Ehhez a forgatókönyvhöz szükséges Érték Leírás Üzenetsor neve Igen <üzenetsor neve> A korábban létrehozott Service Bus-üzenetsor neve. Ez a példa a "Fabrikam-Service-Bus-Queue" kifejezést használja. Üzenetsor típusa Igen Fő Az elsődleges Service Bus-üzenetsor Munkamenet-azonosító Igen Következő elérhető Ez a beállítás minden eseményindító futtatásához lekéri a munkamenetet a Service Bus üzenetsorában található üzenet munkamenet-azonosítója alapján. A munkamenet is zárolva van, így más logikai alkalmazás vagy más ügyfél nem tudja feldolgozni a munkamenethez kapcsolódó üzeneteket. A munkafolyamat későbbi műveletei feldolgozzák az adott munkamenethez társított összes üzenetet, a cikk későbbi részében leírtak szerint. Az alábbiakban további információt talál a munkamenet-azonosító egyéb beállításairól:
- Nincs: Az alapértelmezett beállítás, amely nem eredményez munkameneteket, és nem használható a szekvenciális konvojminta implementálásához.
- Egyéni érték megadása: Ezt a beállítást akkor használja, ha ismeri a használni kívánt munkamenet-azonosítót, és mindig futtatni szeretné az adott munkamenet-azonosító eseményindítóját.
Megjegyzés: A Service Bus-összekötő egyszerre csak korlátozott számú egyedi munkamenetet menthet az Azure Service Busból az összekötő gyorsítótárba. Ha a munkamenetek száma meghaladja ezt a korlátot, a régi munkamenetek törlődnek a gyorsítótárból. További információ: Exchange-üzenetek a felhőben az Azure Logic Apps és az Azure Service Bus használatával.
Intervallum Igen <intervallumok száma> Az ismétlődések közötti időegységek száma az üzenet keresése előtt. Gyakoriság Igen Másodperc, perc, óra, nap, hét vagy hónap Az üzenet keresésekor használandó ismétlődés időegysége. Tipp: Időzóna vagy kezdési időpont hozzáadásához válassza ki ezeket a tulajdonságokat az Új paraméter hozzáadása listából.
További eseményindító-információkért lásd: Service Bus – Üzenet fogadása üzenetsorban (betekintő-zárolás). Az eseményindító egy ServiceBusMessage-t ad ki.
A munkamenet inicializálása után a munkafolyamat az Inicializálás változó művelettel létrehoz egy logikai változót, amely kezdetben false
a következő feltételek teljesülését jelzi:
A munkamenetben nem olvasható több üzenet.
A munkamenet-zárolást már nem kell megújítani, hogy az aktuális munkafolyamat-példány befejeződjön.
Ezután a Próba blokkban a munkafolyamat műveleteket hajt végre az első olvasott üzeneten.
A kezdeti üzenet kezelése
Az első művelet egy helyőrző Service Bus-művelet, a Kezdeti üzenet küldése a témakörbe, amelyet lecserélhet bármely más műveletre, amelyet az üzenetsor munkamenetének első üzenetét kezelni szeretne. A munkamenet-azonosító azt a munkamenetet adja meg, ahonnan az üzenet származik.
A helyőrző Service Bus-művelet elküldi az első üzenetet egy Service Bus-témakörnek, amelyet a Munkamenet-azonosító tulajdonság határoz meg. Így az adott munkamenethez társított összes üzenet ugyanarra a témakörre kerül. A sablon későbbi műveleteinek munkamenet-azonosító-tulajdonságai ugyanazt a munkamenet-azonosító értéket használják.
A Service Bus műveletben az üzenetsor kezdeti üzenetének befejezése, adja meg a Service Bus-üzenetsor nevét, és tartsa meg a művelet többi alapértelmezett tulajdonságértékét.
A Service Bus műveletben hagyja abba a kezdeti üzenetet az üzenetsorból, adja meg a Service Bus-üzenetsor nevét, és tartsa meg a művelet többi alapértelmezett tulajdonságértékét.
Ezután meg kell adnia a szükséges információkat az üzenetsor műveletében a Teljes kezdeti üzenetet követő műveletekhez. A műveletekkel kell kezdenie, amíg a munkamenethez több üzenet is szerepel az üzenetsor-hurokban .
Bár a munkamenetnek több üzenete van az üzenetsorban
Ez a amíg a hurok le nem futtatja ezeket a műveleteket, amíg az üzenetek az üzenetsorban vannak, vagy amíg egy óra el nem telik. A ciklus időkorlátjának módosításához szerkessze a ciklus Időtúllépés tulajdonságát.
További üzenetek lekérése az üzenetsorból, amíg az üzenetek léteznek.
Ellenőrizze a fennmaradó üzenetek számát. Ha az üzenetek továbbra is léteznek, folytassa az üzenetek feldolgozását. Ha nincs több üzenet, a munkafolyamat beállítja a
isDone
változóttrue
, és kilép a ciklusból.
A Service Bus műveletben további üzenetek lekérése a munkamenetből, adja meg a Service Bus-üzenetsor nevét. Ellenkező esetben tartsa meg az összes többi alapértelmezett tulajdonságértéket a műveletben.
Feljegyzés
Alapértelmezés szerint az üzenetek maximális száma van beállítva
175
, de ezt a korlátot a Service Bus üzenetmérete és maximális üzenetméret tulajdonsága befolyásolja. További információkért tekintse meg az üzenetsor üzenetméretét.Ezután a munkafolyamat a következő párhuzamos ágakra oszlik:
Ha hiba vagy hiba történik a további üzenetek keresése közben, állítsa a változót a
isDone
következőretrue
: .A folyamatüzenetek, ha van feltétel , ellenőrzi, hogy a fennmaradó üzenetek száma nulla-e. Ha hamis és több üzenet létezik, folytassa a feldolgozást. Ha igaz, és nincs több üzenet, a munkafolyamat a változót a
isDone
következőretrue
állítja: .
Az If false (Ha hamis) szakaszban az egyes hurkok minden egyes üzenetet első, első előtti sorrendben (FIFO) dolgoznak fel. A hurok beállításaiban az Egyidejűség-vezérlés beállítás értéke van beállítva
1
, így egyszerre csak egyetlen üzenet lesz feldolgozva.A Service Bus-műveletekhez fejezze be az üzenetet egy üzenetsorban, és hagyja abba az üzenetsort, adja meg a Service Bus-üzenetsor nevét.
Miután az üzenetsorban több üzenet érkezett a munkamenethez, a munkafolyamat a változót a
isDone
következőretrue
állítja: .
Ezután meg kell adnia a szükséges információkat a munkamenet-zárolás megújítása műveleteivel kapcsolatban, amíg a megszakított ciklus meg nem szűnik .
Munkamenet-zárolás megújítása visszavonásig
Ez a amíg a hurok gondoskodik arról, hogy a munkamenet-zárolást ez a logikai alkalmazás megtartsa, miközben az üzenetek az üzenetsorban vannak, vagy amíg egy óra el nem telik ezen műveletek futtatásával. A ciklus időkorlátjának módosításához szerkessze a ciklus Időtúllépés tulajdonságát.
Késleltetés 25 másodpercig vagy a feldolgozott üzenetsor zárolási időtúllépési időtartamánál rövidebb ideig. A legkisebb zárolási időtartam 30 másodperc, így az alapértelmezett érték elegendő. A ciklus futási idejének számát azonban a megfelelő módosítással optimalizálhatja.
Ellenőrizze, hogy a
isDone
változó be van-e állítvatrue
.Ha
isDone
be van állítvatrue
, a munkafolyamat továbbra is dolgozza fel az üzeneteket, így a munkafolyamat megújítja a munkamenet zárolását az üzenetsorban, és újra ellenőrzi a ciklus állapotát.Meg kell adnia a Service Bus-üzenetsor nevét a Service Bus műveletben, a zárolás megújítása az üzenetsor munkamenetében.
Ha
isDone
be van állítvatrue
, a munkafolyamat nem újítja meg az üzenetsor munkamenetének zárolását, és kilép a ciklusból.
A munkamenet zárolásának megújítása egy üzenetsorban
Ez a Service Bus-művelet megújítja az üzenetsor munkamenetének zárolását, miközben a munkafolyamat továbbra is üzeneteket dolgoz fel.
A Service Bus műveletben adja meg a Service Bus-üzenetsor nevét a munkamenet zárolásának megújítása üzenetsorban.
Ezután meg kell adnia a Service Bus-művelethez szükséges információkat, be kell zárnia egy munkamenetet az üzenetsoron, és sikeres lesz.
Munkamenet bezárása az üzenetsorban, és sikeres
Ez a Service Bus-művelet bezárja a munkamenetet az üzenetsorban, miután a munkafolyamat befejezte az üzenetsor összes elérhető üzenetének feldolgozását, vagy a munkafolyamat megszakítja a kezdeti üzenetet.
A Service Bus műveletben zárjon be egy munkamenetet egy üzenetsorban, és sikeres legyen, adja meg a Service Bus-üzenetsor nevét.
A következő szakaszok a Catch
szakasz műveleteit ismertetik, amelyek a munkafolyamatban előforduló hibákat és kivételeket kezelik.
Munkamenet bezárása egy üzenetsorban, és sikertelen
Ez a Service Bus-művelet mindig a hatókör első műveleteként Catch
fut, és bezárja a munkamenetet az üzenetsorban.
A Service Bus műveletben zárjon be egy munkamenetet egy üzenetsorban, és sikertelen legyen, adja meg a Service Bus-üzenetsor nevét.
Ezután a munkafolyamat létrehoz egy tömböt, amely a hatókör összes műveletének Try
bemeneteit és kimeneteit tartalmazza, hogy a logikai alkalmazás hozzáférhessen a hiba vagy a hiba adataihoz.
Hiba msg keresése a "Try" blokkból
Ez a Szűrőtömb művelet létrehoz egy tömböt, amely a függvény használatával a megadott feltételek alapján a hatókörben lévő Try
összes művelet bemeneteit és kimeneteit tartalmazzaresult()
. Ebben az esetben ez a művelet a függvény ésitem()
a equals()
függvény használatával visszaadja az állapottal rendelkező Failed
műveletek kimeneteit.
A művelet JSON-definíciója a következő:
"Find_failure_msg_from_'Try'_block": {
"inputs": {
"from": "@Result('Try')",
"where": "@equals(item()['status'], 'Failed')"
},
"runAfter": {
"Close_the_session_in_the_queue_and_fail": [
"Succeeded"
]
},
"type": "Query"
},
Ezután a munkafolyamat létrehoz egy tömböt egy JSON-objektummal, amely tartalmazza a műveletből visszaadott tömb hibaadatait Find failure msg from 'Try' block
.
Hiba részleteinek kiválasztása
Ez a kijelölési művelet létrehoz egy tömböt, amely az előző művelet Find failure msg from 'Try' block
kimenete alapján JSON-objektumokat tartalmaz. Ez a művelet egy olyan tömböt ad vissza, amely csak a tömb egyes objektumaihoz megadott tulajdonságokkal rendelkezik. Ebben az esetben a tömb tartalmazza a művelet nevét és a hiba eredményének tulajdonságait.
A művelet JSON-definíciója a következő:
"Select_error_details": {
"inputs": {
"from": "@body('Find_failure_msg_from_''Try''_block')[0]['outputs']",
"select": {
"action": "@item()['name']",
"errorResult": "@item()"
}
},
"runAfter": {
"Find_failure_msg_from_'Try'_block": [
"Succeeded"
]
},
"type": "Select"
},
Ezután a munkafolyamat leállítja a logikai alkalmazás futtatását, és visszaadja a futtatás állapotát, valamint további információt a hibáról vagy hibáról.
Logikai alkalmazás futtatásának leálltatása
Ez a művelet leállítja a logikai alkalmazás futtatását, és a logikai alkalmazás futásának állapotaként adja vissza Failed
a munkamenet-azonosítót és a műveletből Select error details
eredő hibát.
A művelet JSON-definíciója a következő:
"Terminate": {
"description": "This Failure Termination only runs if the Close Session upon Failure action runs - otherwise the LA will be terminated as Success",
"inputs": {
"runError": {
"code": "",
"message": "There was an error processing messages for Session ID @{triggerBody()?['SessionId']}. The following error(s) occurred: @{body('Select_error_details')['errorResult']}"
},
"runStatus": "Failed"
},
"runAfter": {
"Select_error_details": [
"Succeeded"
]
},
"type": "Terminate"
}
},
Logikai alkalmazás mentése és futtatása
A sablon befejezése után most már mentheti a logikai alkalmazást. A tervező eszköztárán válassza a Mentés lehetőséget.
A logikai alkalmazás teszteléséhez küldjön üzeneteket a Service Bus-üzenetsorba.
Következő lépések
- További információ a Service Bus-összekötő eseményindítóiról és műveleteiről