An Interest In:
Web News this Week
- April 20, 2024
- April 19, 2024
- April 18, 2024
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
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
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To