Bevezetés a krónika sorába
1. Áttekintés
A Chronicle Queue minden egyes üzenetet megőriz egy memória által leképezett fájl segítségével. Ez lehetővé teszi számunkra, hogy üzeneteket osszunk meg a folyamatok között.
Az adatokat közvetlenül a halom nélküli memóriába tárolja, így mentesül a GC rezsiktől. Úgy tervezték, hogy alacsony késleltetésű üzenetkeretet biztosítson nagy teljesítményű alkalmazásokhoz.
Ebben a rövid cikkben megvizsgáljuk az alapvető műveletsort.
2. Maven-függőségek
Hozzá kell adnunk a következő függőséget:
net.openhft krónika 3.6.4
Mindig ellenőrizhetjük a Maven Central által üzemeltetett legújabb verziókat a korábban megadott linkkel.
3. Építőelemek
Három fogalom jellemzi a krónika várólistát:
- Kivonat - egy adattároló
- Appender - appender az adatok írására szolgál
- Filmelőzetes - az adatok egymás utáni leolvasására szolgál
A memória részét lefoglaljuk ír olvas műveletek segítségével Krónika felület.
Itt található a példa létrehozásának példája:
File queueDir = Files.createTempDirectory ("krónika-sor"). ToFile (); Krónika krónika = ChronicleQueueBuilder.indexed (queueDir) .build ();
Szükségünk lesz egy alapkönyvtárra, ahol a sor a memóriában leképezett fájlokban tárolja a rekordokat.
ChronicleQueueBuilder osztály különböző típusú sorokat biztosít. Ebben az esetben használtuk IndexedChronicleQueue amih a szekvenciális indexet használja a rekordok memóriaeltolásainak fenntartására a sorban.
4. Írás a sorba
Ha az elemeket sorba akarjuk írni, létre kell hoznunk egy objektumot ExcerptAppender osztály felhasználásával Krónika példa. Íme egy példa kód az üzenetek sorba írására:
Íme egy példa kód az üzenetek sorba írására:
ExcerptAppender appender = krónika.createAppender (); appender.startExcerpt (); String stringVal = "Hello World"; int intVal = 101; long longVal = System.currentTimeMillis (); dupla doubleVal = 90,00192091d; appender.writeUTF (stringValue); appender.writeInt (intValue); appender.writeLong (longValue); appender.writeDouble (doubleValue); appender.finish ();
Az appender létrehozása után elindítjuk az appender-t az a használatával startExcerpt módszer. Elindul egy Kivonat alapértelmezett üzenetkapacitással 128K. Használhatjuk a startExcerpt egyedi kapacitás biztosítása érdekében.
Miután elindult, a könyvtár által biztosított írási módszerek széles skálájával bármilyen literál vagy objektum értéket felírhatunk a sorba.
Végül, ha befejeztük az írást, befejezzük a kivonatot, az adatokat sorba mentjük, majd később lemezre.
5. Olvasás a várólistáról
Az értékek olvasása tól től a sor könnyen megtehető a ExcerptTrailer példa.
Pontosan olyan, mint egy iterátor, amelyet egy Java-gyűjteményen haladunk át.
Olvassuk el az értékeket a sorból:
ExcerptTailer tailer = krónika.createTailer (); while (tailer.nextIndex ()) {tailer.readUTF (); tailer.readInt (); tailer.readLong (); tailer.readDouble (); } tailer.finish ();
A trailer elkészítése után a nextIndex módszer annak ellenőrzésére, hogy van-e új kivonat.
Egyszer ExcerptTailer van egy új Kivonat az olvasáshoz a tartomány tartományának használatával olvashatunk róla üzeneteket olvas módszerek szó szerinti és objektumtípusú értékekre.
Végül befejezzük az olvasást a Befejez API.
6. Következtetés
Ebben az oktatóanyagban röviden bemutattuk a Krónika Sorát és annak építőköveit. Láttuk, hogyan lehet sort létrehozni, adatokat írni és olvasni. Használata számos előnnyel jár, beleértve az alacsony késleltetést, a tartós folyamatközi kommunikációt (IPC), valamint a szemétgyűjtés nélkül.
A megoldás memória-leképezett fájlokon keresztül biztosítja az adatok tartósságát - adatvesztés nélkül. Ez lehetővé teszi egyidejű olvasást és írást is több folyamatból; az írásokat azonban szinkron módon kezelik.
Mint mindig, minden kódrészlet megtalálható a GitHubon.