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.