Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 129246|Válasz: 17

[Forrás] Kafka műveletek .NET/C# üzenetsorokhoz [forráskóddal]

[Linket másol]
Közzétéve 2021. 04. 13. 11:45:31 | | | |
A Kafka egy nagy teljesítményű, elosztott üzenetküldő rendszer, amelyet a LinkedIn fejlesztett ki, és széles körben használják olyan helyzetekben, mint a naplógyűjtés, adatfeldolgozás, online és offline üzenetterjesztés és még sok más. Bár nem hagyományos MQ-ként tervezték, a Kafaka a legtöbb esetben helyettesítheti a hagyományos üzenetküldő rendszereket, például az ActiveMQ-t.

A Kafka témák szerint szervezi az üzenetek áramlását, és az üzeneteket tároló szervert brókernek hívják, így a fogyasztók egy vagy több témára is előfizethetnek. A terhelés kiegyensúlyozásához egy téma üzenetei több partícióra oszthatók, és minél több partíció, annál nagyobb a párhuzamosság és a Kafka áteresztősége.

A Kafka klaszterekhez zookeeper támogatás szükséges a klaszterek megvalósításához, és a zookeeper már benne van a legújabb Kafka disztribúcióban, amely egyszerre telepíthető zookeeper szerver és Kafka szerver indítására, vagy más meglévő zookeeper klasztereket is használhat.

A hagyományos MQ-tól eltérően a fogyasztóknak önmaguknak kell megtartaniuk az offsetet, és amikor üzeneteket kapnak a kafka-tól, csak a jelenlegi eltolás után húzzák le az üzeneteket. A Kafka scala/java kliense már ezt a logikai részt valósítja meg azzal, hogy az offsetet elmenti az állatkerti őrzőnek. Minden fogyasztó választhat azonosítót, és ugyanazzal az azonosítóval rendelkező fogyasztók csak egyszer kapják ugyanazt az üzenetet.Ha egy téma fogyasztói mind ugyanazt az azonosítót használják, az hagyományos sor. Ha minden fogyasztó más azonosítót használ, az hagyományos pub-sub.

Szemle:

ActiveMQ hozzáadása rendszerszolgáltatásokhoz Windows alatt
https://www.itsvse.com/thread-6210-1-1.html

Várakozódó üzenetek, üzeneteksorba állítva, üzenet...
https://www.itsvse.com/thread-4954-1-1.html

Összefoglaló az ActiveMQ-ról és a RabbitMQ-ról
https://www.itsvse.com/thread-4659-1-1.html

A szolgáltatáshoz hozzáadták a CentOS ActiveMQ-t
https://www.itsvse.com/thread-4617-1-1.html

Centos 6.2 64-bites installáció activemq oktató
https://www.itsvse.com/thread-4616-1-1.html

Az ActiveMQ5.15.3 nem indul el, és UnsupportedClassVersionError jelentése
https://www.itsvse.com/thread-4615-1-1.html

Activemq téma jogosultsági beállítások
https://www.itsvse.com/thread-4495-1-1.html

Az itsvse felhasználónak nincs felhatalmazása a következő forrásokból olvasni: ActiveMQ.Advisory.TempQueue,Activ...
https://www.itsvse.com/thread-4476-1-1.html

C# Az ActiveMQ kliens feliratkozik a forráskódra
https://www.itsvse.com/thread-4470-1-1.html

.net/c# activemq beállításához a kapcsolati fiók és jelszó beállításához
https://www.itsvse.com/thread-4282-1-1.html

Állítsd be a felhasználónevet és jelszót az ACTIVEMQ témához és a sorba
https://www.itsvse.com/thread-4281-1-1.html

Az ActiveMQ módosítja a weboldal-kezelő jelszót
https://www.itsvse.com/thread-4280-1-1.html

activemq Állandó tároló tele van
https://www.itsvse.com/thread-4125-1-1.html

.NET/C# ActiveMQ műveleti példa [Forráskód]
https://www.itsvse.com/thread-3907-1-1.html

Activemq felhasználói jogosultsági konfiguráció
https://www.itsvse.com/thread-3906-1-1.html

Az activemq Queue és a Topic közötti különbség az, hogy
https://www.itsvse.com/thread-3863-1-1.html

. .Net platform
https://www.itsvse.com/thread-3452-1-1.html

ActiveMQ állandó előfizetési beállítások
https://www.itsvse.com/thread-3451-1-1.html

RabbitMQ BasicQos fogyasztói párhuzamos feldolgozási korlát
https://www.itsvse.com/thread-4667-1-1.html

rabbitMQ Queue Queue Üzenet Kitartás [forráskóddal]
https://www.itsvse.com/thread-4657-1-1.html

【Practice】rabbitMQ console to add account information
https://www.itsvse.com/thread-4655-1-1.html

Mélyreható elemzés a RabbitMQ üzenetválasz mechanizmusáról
https://www.itsvse.com/thread-4639-1-1.html

.net/c# RabbitMQ kapcsolatmegszakítás – megszakítás és újracsatlakozás
https://www.itsvse.com/thread-4636-1-1.html

Bevezetés a RabbitMQ három cseremódjához (fanout, direct és topic)
https://www.itsvse.com/thread-4635-1-1.html

【Practice】RabbitMQ installs the web management plugin
https://www.itsvse.com/thread-4631-1-1.html

【Practical Combat】RabbitMQ telepítési tutorial Windows alatt
https://www.itsvse.com/thread-4630-1-1.html
Kafka fogyasztása

1. Ugyanannak a group_id fogyasztói csak egy fogyasztó fogyaszthat üzeneteket (Sorban állás mód

2. Különböző group_id fogyasztói ugyanazt a hírt kapják

A Kafka előnyei

Elosztott és nagyon skálázható. A Kafka klasztereket átláthatóan skálázhatók, hogy új szervereket adjanak a klaszterhez.

Magas teljesítmény. A Kafka teljesítménye messze meghaladja a hagyományos MQ megvalósításokat, mint az ActiveMQ és a RabbitMQ, különösen a Kafka, amely szintén csomagos műveleteket támogat. Az alábbi kép a LinkedIn fogyasztói teljesítmény stressztesztjének eredményeit mutatja:

Hibatűrés. A Kafka minden partíciójának adatai több szerverre replikálnak. Ha egy bróker meghibásodik, a ZooKeeper szolgáltatás értesíti a termelőt és a fogyasztót, akik átváltanak egy másik brókerre.

A Kafka hátrányai:

Ismételd meg az üzeneteket. Kafka csak garantálja, hogy minden üzenetet legalább egyszer kézbesítenek, és bár az esélyek kicsik, az is előfordulhat, hogy egy üzenetet többször is kézbesítenek.
A hírek nem rendezőek. Bár a partíción belüli üzenetek garantáltan rendezettek, ha egy témában több partíció van, az üzenetküldés partíciók között nem garantált rendezett.
Komplexitás. A Kafkának állatkerti klaszterek támogatására van szüksége, és a témák általában kézi munkát igényelnek a létrehozása, telepítése és fenntartása drágább, mint az általános üzenetsorok

.NET/C# üzenetsor: Kafka műveletek

Először is, használd a .NET Core 3.1-et két új konzolprojekt létrehozására, nevezetesen a Kafka-Consumer és a Kafka-Producer

Használd a nuget-et, hogy hivatkozz a Confluent.Kafka csomagra így, a következő parancsval:

GitHub cím:A hiperlink bejelentkezés látható.

Először a Producer programot indítjuk, és ha először a fogyasztót indítjuk, akkor a következő hibát kapjuk:
Hiba történt: Broker: Ismeretlen téma vagy partíció

Ez a cikk a beállításokat fogja használniAz EnableAutoOffsetStore hamis, vagyis az eloltási tároló kézi beállítása (hasonlóan egy kézi megerősítő üzenethez)

A fogyasztók nem állítják be az OffsetStore-t fogyasztás után

Próbáld meg a producerrel két üzenetet generálni, kapcsold be a fogyasztói fogyasztást, MaxPollIntervalMs = 10000 // 10 másodperc manuális beállítás nélkül, engedd meg, hogy más kliensek is felhasználhassa, természetesen nem fogják 10 másodpercen belül más kliensek fogyasztani

MaxPollIntervalMs magyarázza
A haladó fogyasztók számára a maximális idő lehetővé tette az üzenetek fogyasztására a hívások között (például rd_kafka_consumer_poll()). Ha ezt az intervallumot túllépik, a fogyasztót meghibásodottnak tekintik, és a csoportot újrakiegyensúlyozzák úgy, hogy a partíciót egy másik fogyasztói csoport taghoz rendeljék át. Figyelem: Jelenleg nem feltétlenül lehetséges az offset commit. Megjegyzés: Ajánlott beállítani az "enable.auto.offset.store=false" beállítást olyan alkalmazásoknál, amelyek hosszú ideje dolgoznak, majd az üzenet feldolgozása után explicit módon tároljuk az offsetet (offsets_store()) használatával, hogy biztosítsuk, hogy az offset ne legyen automatikusan elkötelezve, mielőtt a feldolgozás befejeződik. Másodpercenként egyszer ellenőrizd kétszer. További információért lásd a KIP-62-t.

A képek a következők:



Az OffsetStore akkor van beállítva, miután a fogyasztó befejezte a költegetést.

kód

A beállítás után várj 10 másodpercet, és még mindig működikMegkaptam az utolsó üzenetet(Amikor a fogyasztó kapcsolatba lép a brókerrel,Kezdjük a fogyasztást az offset pozícióbólHa c.Commit(cr) be van állítva; Az utolsó üzenet nem érkezik meg ismételten.

Forráskód megtekintése



commit az offset + 1 commit, és végül Librdkafka.topic_partition_list_destroy(cOffsets) hívja;

A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.

Állíts be egy másik GroupId

Próbálj meg egy másik GroupId-t beállítani a parancssori paraméteren keresztül, majd küldj üzenetet a produceren keresztül, ahogy az alábbi képen is látható:



Mind a clinet1, mind a client2Történelmi üzenetek fogadása, és miután a producer üzenetet küld, mindkettő majdnem így leszÜzenetek egyszerre fogadására

Az új fogyasztók csak új üzeneteket kapnak

Hogyan lehet egy új kliensnek csak új üzeneteket kapni, és figyelmen kívül hagyni a történelmi adatokat?

A beállítások a következők:

Ahogy az alábbiakban látható:



Producer kód

Következőképpen:

Fogyasztói kódex

Következőképpen:

Forráskód letöltés

Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlekVálasz






Előző:.NET/C# Kivétel Tencent Enterprise Postaládával: Az operáció időlejárt.
Következő:A NuGet töröli a cache-t
 Háziúr| Közzétéve 2021. 04. 15. 9:31:05 |
Amikor a .NET Kafka kliens megszakad, nem ad kivételt, és a hálózat normális állapota után újra csatlakozik
%4|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Megszakítva (59926ms után az állapotban UP)
%3|1618450028.267| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Megszakítva (59926ms után az állapotban UP)
%3|1618450028.267| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez való csatlakozás: Ismeretlen hiba (0ms után a CONNECT állapotban)
%3|1618450028.268| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-höz sikertelen: Ismeretlen hiba (0ms után a CONNECT állapotban)
%3|1618450028.357| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez: Ismeretlen hiba (10 ms után a CONNECT állapotban, 1 azonos hiba(k) elnyomva)
%3|1618450028.357| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-höz sikertelen: Ismeretlen hiba (10ms után a CONNECT állapotban, 1 azonos hiba(k) elnyomva)
%3|1618450062.882| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-höz való csatlakozás: Ismeretlen hiba (0ms után a CONNECT állapotban, 8 azonos hiba(s) elnyomva)
%3|1618450062.882| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez: Ismeretlen hiba (0ms után a CONNECT állapotban, 8 azonos hiba(s) elnyomva)
%3|1618450098.255| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez való csatlakozás: Ismeretlen hiba (11ms állapotban a CONNECT állapotban, 4 azonos hiba(k) elnyomva)
%3|1618450098.255| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez: Ismeretlen hiba (11ms után a CONNECT állapotban, 4 azonos hiba(t) elnyomva)
%3|1618450138.243| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-höz sikertelen: Ismeretlen hiba (0ms után a CONNECT állapotban, 4 azonos hiba(k) elnyomva)
%3|1618450138.244| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez sikertelen: Ismeretlen hiba (0ms után a CONNECT állapotban, 4 azonos hiba(k) elnyomva)
%3|1618450168.254| FAIL|rdkafka#consumer-1| [thrd:192.168.1.175:9092/bootstrap]: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez való csatlakozás sikertelen: Ismeretlen hiba (10 ms után a CONNECT állapotban, 3 azonos hiba(s) elnyomva)
%3|1618450168.254| ERROR|rdkafka#consumer-1| [thrd:app]: rdkafka#consumer-1: 192.168.1.175:9092/1: Csatlakozz az ipv4#192.168.1.175:9092-hez: Ismeretlen hiba (10ms után a CONNECT állapotban, 3 azonos hiba elnyomva)

 Háziúr| Közzétéve 2021. 04. 13. 16:26:58 |
Az üzenetfogyasztás elve:

A tényleges gyártási folyamatban minden témának több partíciója lesz, és a több partíció előnye, hogy egyrészt az adatok megosztása a közvetítőn hatékonyan csökkenti az üzenetek kapacitását és javítja az IO teljesítményét. Másrészt a fogyasztói oldal fogyasztási erejének javítása érdekében általában ugyanazt a témát több fogyasztón keresztül is lefedik, vagyis a fogyasztói oldal terheléselosztási mechanizmusa, amit a következőképpen megértünk: hogyan fogyasztják el a fogyasztók az üzeneteket több partíció és több fogyasztó esetén? A Kafka a fogyasztói csoportok fogalmában létezik, vagyis ugyanolyan fogyasztói csoportok group.id egy fogyasztói csoporthoz tartoznak, és a csoport összes fogyasztója koordinálja, hogy felhasználja az előfizetési téma összes partícióját. Természetesen minden partíciót csak ugyanabban a fogyasztócsoportban lévő fogyasztók használhatnak, tehát hogyan osztják ki az azonos fogyasztói csoportban lévő fogyasztók azokat az adatokat, amelyekben a partíciót el kellene fogyasztani? Egyszerű példaként: ha veszítenek partíciók, vagyis ha a partitonok száma megegyezik a fogyasztók számával, minden fogyasztó egy partíciónak felel meg, ha a fogyasztók száma több, mint a partíciók, akkor a plusz számú fogyasztók nem működnek, épp ellenkezőleg, lesznek olyan fogyasztók, akik több partíciót fogyasztanak.

Övezeti kiosztási stratégia:

A kafkában két partíciós allokációs stratégia létezik: az egyik a Range (alapértelmezett), a másik pedig RoundRobin (szavazás). Ezt a fogyasztó konfigurációja partition.assignment.strategy paramétere állítja be.


Minden témát nézz meg


Tekintse meg a témához szükséges részleteket




 Háziúr| Közzétéve 2021. 05. 08. 17:17:33 |
A Kafka töröli a fogyasztói csoportokat



A kért fogyasztói csoportok ("itsvse") törlése sikeres volt.


Az alábbi hibák jelenthetők:

Error: Deletion of some consumer groups failed:
* Az 'itsvse' csoportot nem lehetett törölni, mert a következők: java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.GroupNotEmptyException: A csoport nem üres.
megoldás

Használd fel az összes üzenetet, vagy állíts be egy eloszlást

Kafka manuálisan állítja be az elolást
https://www.itsvse.com/thread-9641-1-1.html
Akkor töröld újra!

 Háziúr| Közzétéve 2021. 04. 13. 15:40:48 |
Power Shell parancsnokság



Minden fogyasztói kliens 2 kapcsolatot tart fenn a Kafka szolgáltatáshoz
 Háziúr| Közzétéve 2021. 05. 07. 12:37:06 |
kafka, hogy megtekintse a témahalmok számát egy meghatározott csoport alatt

Közzétéve 2021. 06. 16. 12:41:09 |
Kérlek, kérdezd meg, miért nem nézhető meg a kód~
 Háziúr| Közzétéve 2021. 06. 25. 10:50:06 |
Kafka megkapja a topic size parancsot:



 Háziúr| Közzétéve 2021. 07. 18. 10:15:01 |
Kafka parancssor, hogy témákat hozzanak létre:

Közzétéve 2021. 09. 03. 11:52:41 |
A kafkában még mindig sok bukta van, megtanulták
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com