Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 11, 2022 09:03 am GMT

Apache Kafka ile veri yazma ve okuma

Apache Kafka zerinde konular (topic) vastas ile veriler gnderebilir ve bu verileri okuyabiliriz.

Bu ilem iin bir ok programlama dilinde zmler olduu gibi rnek olmas asndan Python3 zerinde python3-kafka paketi ile denemelerimizi yapacam.

Bir nceki yazmzdaki docker konteynr zerinde yapabileceiniz gibi aada belirli ayarlar yaparak kendi sunucunuzla da iletime geebilirsiniz.

Python iin Kafka ktphanesini ykleme

Python iin zerinde bir ok kafka ktphanesi olmasna ramen en ok kullanlanlardan birisi olan python3-kafka paketini kullanacam. Kurulum iin aadaki komutun yazlmas gerekecektir

sudo apt install python3-kafka

Bu admdan sonra python zerinde kafka ktphanesini kullanabilir olacaz.

retici ile veri yazma

Bu admda "uretici.py" isimli basit bir dosya oluturabiliriz. smi istediiniz gibi verebilirsiniz ama kavram olarak retici (producer) Kafka anlatmlarnda kullanld iin bu ismi kullandm. Bu dosya ierii aadaki gibi yaplabilir.

from kafka import KafkaProducerimport jsonproducer = KafkaProducer( bootstrap_servers='localhost:9092', value_serializer=lambda v: json.dumps(v).encode('ascii'))producer.send( 'ornekinsanlar', value=    {     "name": "Ali Yazar",     "yas": "12",     "dogumyeri": "Zonguldak",     "detay": "iyi bayramlar!"     })producer.flush()

Yazlan uygulamay incelersek "ornekinsanlar" olarak yazlm ifadenin Kafka zerindeki bir konu (topic) olduunu anlayabiliriz.

st ksmda KafkaProducer olarak da hangi sunucu adresine hangi port zerinden eriilebileceini sormakta. Docker zerinde rnek yapyorsanz ayn ekilde (localhost:9092) brakmanz yeterli olacaktr.

Ayrca Kafka'nn SSL destei bulunduu iin normal artlarda SSL ayarlarnn da yaplmas gerektiini sylemem gerekir. Fakat rnek olmas asndan bu ayarlar es geiyoruz.

retici uygulamamzn Kafka ile haberlemesi sonrasnda aadaki gibi bir JSON formatnn Kafka'ya gnderilmesi salanmakta.

    {     "name": "Ali Yazar",     "yas": "12",     "dogumyeri": "Zonguldak",     "detay": "iyi bayramlar!"     }

Bu ksmdaki ierik uygulamanzn ihtiyalarn anlatmakta. stediiniz gibi oluturabilirsiniz.

Veri yazma ilemi

Dosyay oluturdu isek aadaki gibi dosyann ierisine yazdmz json verisini Kafka'ya gnderebiliriz. eriini deitirerek birka kere altrdnzda pe pee eklendiini greceksiniz.

python3 uretici.py

Tketici ile veri okuma

Yazdnz verilerin okunmas ksm da olduka basit olmaktadr.

Bu admda "tuketici.py" isimli basit bir dosya oluturabiliriz. smi istediiniz gibi verebilirsiniz ama kavram olarak tketici (consumer) Kafka anlatmlarnda kullanld iin bu ismi kullandm. Bu dosya ierii aadaki gibi yaplabilir.

from kafka import KafkaConsumerfrom pprint import pprintif __name__ == '__main__':    consumer = KafkaConsumer('ornekinsanlar', bootstrap_servers="localhost:9092",                             enable_auto_commit=False, auto_offset_reset="earliest")    pprint(consumer.metrics())    for msg in consumer:        pprint(msg)

Yazlan uygulamay incelersek "ornekinsanlar" olarak yazlm ifadenin Kafka zerindeki bir konu (topic) olduunu anlayabiliriz.

Benzer ekilde KafkaProducer olarak da hangi sunucu adresine hangi port zerinden eriilebileceini sormakta. Docker zerinde rnek yapyorsanz ayn ekilde (localhost:9092) brakmanz yeterli olacaktr.

lk olarak balant kurduumuz Kafka ile temel bilgileri ekmek iin "consumer.metrics()" fonksiyonunu kullanyoruz.

Daha sonrasnda ise ektiimiz konu (topic) ierisindeki verilerin for dngs ierisinde verilerinin tamamnn ekileceini grebiliriz.

python3 tuketici.py

Uygulamann kts aadaki gibi olacaktr.

ConsumerRecord(topic='ornekinsanlar', partition=0, offset=0, timestamp=1657528880472, timestamp_type=0, key=None, value=b'{"name": "Ali Bir", "yas": "21", "dogumyeri": "Ankara", "detay": "iyi bayramlar!"}', headers=[], checksum=None, serialized_key_size=-1, serialized_value_size=87, serialized_header_size=-1)ConsumerRecord(topic='ornekinsanlar', partition=0, offset=1, timestamp=1657529032891, timestamp_type=0, key=None, value=b'{"name": "Ali Yazar", "yas": "12", "dogumyeri": "Zonguldak", "detay": "iyi bayramlar!"}', headers=[], checksum=None, serialized_key_size=-1, serialized_value_size=87, serialized_header_size=-1)

Nam et ipsa scientia potestas est


Original Link: https://dev.to/aciklab/apache-kafka-ile-veri-yazma-ve-okuma-15co

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To