Kapcsolódó üzenetek küldése sorrendben egy szekvenciális konvoj használatával az Azure Logic Appsben Azure Service Bus
A következőkre vonatkozik: Azure Logic Apps (használat)
Ha egy adott sorrendben kell elküldenie a korrelált üzeneteket, kövesse a szekvenciális konvojmintát az Azure Logic AppsAzure Service Bus-összekötő használatával történő 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 10 üzenete van egy "1. munkamenet" nevű munkamenethez, és 5 üzenete van egy "2. munkamenet" nevű munkamenethez, amelyek mind ugyanarra a Service Bus-üzenetsorra lesznek elküldve. 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ó-futtatás kezeli, a "2. munkamenet" összes üzenetét pedig a következő eseményindító-futtatás kezeli.
Ez a cikk bemutatja, hogyan hozhat létre egy olyan logikai alkalmazást, amely ezt a mintát implementálja a Rendelésközi kézbesítés a Service Bus-munkamenetek sablonnal való használatával. Ez a sablon egy logikai alkalmazás munkafolyamatát határozza meg, amely a Service Bus-összekötő Üzenet fogadása üzenetsorba (peek-lock) eseményindítójával kezdődik, amely egy Service Bus-üzenetsorból fogad üzeneteket. Az alábbi magas szintű lépéseket hajtja végre ez a logikai alkalmazás:
Munkamenet inicializálása egy üzenet alapján, amelyet az eseményindító a Service Bus-üzenetsorból olvas be.
Olvassa el és dolgozza fel az üzenetsor ugyanazon munkamenetének összes üzenetét az aktuális munkafolyamat futtatása során.
A sablon JSON-fájljának áttekintéséhez lásd : GitHub: service-bus-sessions.json.
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 használni fog a logikai alkalmazásban. 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 járjon el, ha egy azonos összekötőtípusú eseményindítót és műveletet is kiválaszt, és ugyanazzal az entitással, például üzenetküldési üzenetsorsal vagy témakör-előfizetéssel dolgozik. Ez a kombináció végtelen hurkot hozhat létre, amely egy soha véget nem érő logikai alkalmazást eredményez.
A logikai alkalmazások létrehozásának alapszintű ismerete. Ha még nem ismerkedik az Azure Logic Appsszel, próbálja ki azt a rövid útmutatót, amely létrehoz egy példa logikai alkalmazás-használat munkafolyamatot 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 Portal. Keresse meg és válassza ki a Service Bus-névteret.
A névtér menü Beállítások csoportjában válassza a Megosztott hozzáférési szabályzatok lehetőséget. A Jogcímek területen 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 is 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 területén 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 üzenetküldési entitáshoz, például egy üzenetsorhoz, keressen rá a
EntityPath
paraméter 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ációja service bus-munkamenetek sablon használatával , amely tartalmazza a munkafolyamat-minta implementálásának eseményindítóját és műveleteit. 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.
A Azure Portal hozzon létre egy üres logikai alkalmazást. Az Azure kezdőlapján válassza azErőforrás-integrációs>>logikai alkalmazáslétrehozásalehető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 a Service Bus-munkamenetek használatával korrelált rendelésen belüli kézbesítést ismertető sablont.
Amikor megjelenik a megerősítési 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 válassza ki az alakzatban megjelenő pluszjelet (+).
Most hozzon létre egy Service Bus-kapcsolatot a következő lehetőségek egyikével:
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 neve mezőben adja meg a kapcsolat nevét. A Kapcsolati sztring mezőbe illessze be a névteret kapcsolati sztring, majd 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 neve mezőben adja meg a kapcsolat nevét. A Service Bus-névtér esetében 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 mostantól a Service Bus-munkamenetek sablonjával jeleníti meg a korrelált rendelésen belüli 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 valósítanak meg.
Most többet is megtudhat a sablon eseményindítójáról és műveleteiről, vagy továbbléphet a logikai alkalmazássablon értékeinek megadásához.
Sablon összegzése
Az alábbiakban a rendelési sorrendben történő kézbesítéshez kapcsolódó, service bus-munkamenetek sablont használó legfelső szintű munkafolyamat 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 peek-lock 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 a változó inicializálása művelet létrehoz egy logikai változót, amely a következő feltételek teljesülése esetén van beállítva false és jelzi:– A munkamenetben nincs több elolvasható ü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ör mű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 tartalmazza azokat a műveleteket, 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
Íme a legfelső szintű folyamat a Try
hatókörműveletben 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 kezelni szeretne az üzenetsor munkamenetének első üzenetével. A munkamenet-azonosító határozza meg a munkamenetet. Ebben a sablonban egy Service Bus-művelet elküldi az első üzenetet egy Service Bus-témakörnek. 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: Az üzenet feldolgozásának folytatása. További információ: 1. ág: Kezdeti üzenet befejezése az üzenetsorban. - 2. ág: Hagyja abba az üzenetet, ha valami probléma merül fel, és engedje fel a felvételt egy másik eseményindító futtatásával. További információ: 2. ág: A kezdeti üzenet elhagyása az üzenetsorból. Mindkét elérési út később csatlakozik az üzenetsor munkamenetének bezárása és a sikeres művelet során, amelyet a következő sorban ismertetünk. |
Close a session in a queue and succeed |
Ez a Service Bus-művelet összekapcsolja a korábban leírt ágakat, és az alábbi események valamelyike után bezárja a munkamenetet az üzenetsorban: – 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 meg a sikeresen lekért üzenetet, és eltávolítja az üzenetet az üzenetsorból az újrafeldolgozás megakadályozása érdekében. 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 hurok továbbra is üzeneteket kap, amíg az üzenetek léteznek, vagy amíg egy óra el nem telik. Az ebben a hurokban található műveletekkel kapcsolatos további információkért lásd: A munkamenetnek több üzenete van az üzenetsorban. |
Set isDone = true |
Ha nincs több üzenet, a Változó beállítása művelet értékre true van állítvaisDone . |
Renew session lock until cancelled |
Ez az Until hurok biztosítja, hogy a munkamenet-zárolást ez a logikai alkalmazás őrizte-e meg, amíg az üzenetek léteznek, vagy amíg egy óra el nem telik. Az ebben a ciklusban végrehajtott műveletekkel kapcsolatos további információkért lásd: Munkamenet-zárolás megújítása megszakításig. |
2. ág: A kezdeti üzenet feladása az üzenetsorból
Ha az első üzenetet kezelő művelet meghiúsul, a Service Bus-művelet, a Kezdeti üzenet elvetése az üzenetsorból, egy másik munkafolyamat-példány futtatásának üzenetét adja ki a felvételhez és a feldolgozáshoz. Részletekért lásd : A kezdeti üzenet kezelése.
"Catch" hatókör
Ha a hatókörben végrehajtott Try
műveletek 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 a következő állapotot eredményezi: Failed
, Skipped
vagy TimedOut
. A hatókör egy hibaüzenetet ad vissza, amely tartalmazza azt a munkamenet-azonosítót, ahol a probléma történt, és leállítja a logikai alkalmazást.
Itt látható a legfelső szintű folyamat a Catch
hatókörműveletben a részletek összecsukásakor:
Név | Leírás |
---|---|
Close a session in a queue and fail |
Ez a Service Bus-művelet lezárja a munkamenetet az üzenetsorban, hogy a munkamenet-zárolás ne maradjon nyitva. Részletekért lásd: Munkamenet bezárása az üzenetsorban, és sikertelen. |
Find failure msg from 'Try' block |
Ez a Tömbszűrő művelet tömböt hoz létre 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. Részletekért lásd: Hibakeresési hiba a "Try" blokkból. |
Select error details |
Ez a Kiválasztás 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 hiba részleteiből létrehozott JSON-objektumot tartalmaz. Részletekért lásd: Hiba részleteinek kiválasztása. |
Terminate |
Ez a Megszakítás művelet leállítja a munkafolyamat futtatását, megszakítja a folyamatban lévő műveleteket, kihagyja a többi műveletet, és visszaadja a megadott állapotot, a munkamenet azonosítóját és a Select error details műveletből származó hibát. Részletekért lásd a logikai alkalmazás leállítását ismertető cikket. |
A sablon befejezése
Ha meg szeretné adni az eseményindító és a műveletek értékeit a Rendelésközi kézbesítés a Service Bus-munkamenetek használatával sablonban , 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, amelyet csillag (*) jelöl meg.
A munkamenet inicializálása
Az Üzenet fogadása üzenetsorba (peek-lock) eseményindító esetében adja meg ezt az információt, hogy a sablon inicializálni tudja a munkamenetet a Munkamenet-azonosító tulajdonság használatával, például:
Megjegyzés
Kezdetben a lekérdezési időköz három percre van beállítva, így a logikai alkalmazás nem fut a vártnál gyakrabban, és nem várt számlázási díjakat eredményez. 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 Yes <queue-name> 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 Yes 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áshoz 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 lehetőséget 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 Azure Service Bus 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 Appsszel és Azure Service Bus.
Intervallum Yes <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 ismétlődés üzenet keresésekor használandó időegysége. Tipp: Időzóna vagy Kezdési idő hozzáadásához válassza ki ezeket a tulajdonságokat az Új paraméter hozzáadása listából.
Az eseményindítóval kapcsolatos további információkért lásd: Service Bus – Üzenet üzenetsorba érkezésekor (betekintő-zárolás). Az eseményindító egy ServiceBusMessage kimenetet ad ki.
A munkamenet inicializálása után a munkafolyamat a Változó inicializálása művelettel létrehoz egy logikai változót, amely kezdetben értékre false
van állítva, és jelzi, hogy a következő feltételek teljesülnek-e:
A munkamenetben nincs több elolvasható ü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 Kipróbálás 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ó határozza meg azt a munkamenetet, 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űvelet Kezdeti üzenet befejezése üzenetsorában adja meg a Service Bus-üzenetsor nevét, és tartsa meg az összes többi alapértelmezett tulajdonságértéket a műveletben.
A Service Bus műveletben hagyja el a kezdeti üzenetet az üzenetsorból, adja meg a Service Bus-üzenetsor nevét, és tartsa meg az összes többi alapértelmezett tulajdonságértéket a műveletben.
Ezután meg kell adnia a szükséges információkat azokhoz a műveletekhez, amelyek a Kezdeti üzenet befejezése az üzenetsorban műveletet követik. A műveletekkel fog kezdődni a Bár több üzenet van a munkamenethez 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 hurok időkorlátjának módosításához szerkessze a hurok 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 a változót a
isDone
értékretrue
állítja, és kilép a hurokbó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.
Megjegyzés
Alapértelmezés szerint az üzenetek maximális száma értékre
175
van állítva, de ezt a korlátot a Service Bus üzenetmérete és maximális üzenetméret tulajdonsága befolyásolja. További információ: Üzenetméret egy üzenetsorhoz.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
értékretrue
.A Folyamatüzenetek, ha van feltételünk , 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
értékretrue
állítja.
Az If false (Ha hamis ) szakaszban az Egyes hurkok az egyes üzeneteket első lépésben, első sorrendben (FIFO) dolgozza fel. A hurok Beállításaiban az Egyidejűség-vezérlés beállítás értéke ,
1
így egyszerre csak egyetlen üzenet lesz feldolgozva.A Service Bus-műveleteknél fejezze be az üzenetet egy üzenetsorban , és hagyja abba az üzenetet az üzenetsorban, adja meg a Service Bus-üzenetsor nevét.
Miután az üzenetsorban több üzenet van 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 a megszakított hurokig .
Munkamenet-zárolás megújítása megszakításig
Ez a amíg a hurok biztosítja, hogy a munkamenet-zárolást ez a logikai alkalmazás tartja, miközben az üzenetek az üzenetsorban vannak, vagy amíg egy óra el nem telik ezen műveletek futtatásával. A hurok időkorlátjának módosításához szerkessze a hurok 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 idő. 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 optimalizálhatja a megfelelő módosítással.
Ellenőrizze, hogy a
isDone
változó értéketrue
.Ha
isDone
a értékretrue
van állítva, a munkafolyamat továbbra is feldolgozta az üzeneteket, így a munkafolyamat megújítja az üzenetsor munkamenetének zárolását, és újra ellenőrzi a hurokfeltételt.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
a értékretrue
van állítva, a munkafolyamat nem újítja meg a zárolást az üzenetsorban lévő munkameneten, és kilép a hurokból.
Zárolás megújítása a munkameneten egy üzenetsorban
Ez a Service Bus-művelet megújítja az üzenetsor munkamenetének zárolását, miközben a munkafolyamat még dolgozik az üzeneteken.
A Service Bus műveletben az üzenetsor munkamenetének zárolásának megújítása során adja meg a Service Bus-üzenetsor nevét.
Ezután meg kell adnia a Service Bus művelethez szükséges információkat, lezár egy munkamenetet az üzenetsorban, és sikeres lesz.
Munkamenet bezárása egy ü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.
Az alábbi szakaszok a szakasz műveleteit Catch
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, 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 bekövetkezett hibával vagy hibával kapcsolatos információkhoz.
Hibakeresési msg 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 az állapotú műveletek Failed
kimeneteit adja vissza a függvény és item()
a equals()
függvény használatával.
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űvelet által visszaadott tömb hibaadatait Find failure msg from 'Try' block
.
Hiba részleteinek kiválasztása
Ez a Kijelölés művelet létrehoz egy tömböt, amely JSON-objektumokat tartalmaz az előző művelet kimenete alapján. Find failure msg from 'Try' block
Ez a művelet egy tömböt ad vissza, amely csak a tömb minden objektumához 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 bekövetkezett hibáról vagy hibáról.
Logikai alkalmazás futtatásának leálltatása
Ez a Megszakítás művelet leállítja a logikai alkalmazás futtatását, és visszaadja Failed
a logikai alkalmazás futásának állapotát a munkamenet-azonosítóval és a műveletből származó hibával Select error details
együtt.
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 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