Článek přečtěte do 3 min.

Oracle Transactional Event Queues (TxEventQ) nativně přináší streamování událostí přímo do databáze Oracle. TxEventQ, postavený na platformě Advanced Queuing (AQ), ale vylepšený pro škálování, dělení a sémantiku pub-sub, eliminuje v mnoha architekturách potřebu samostatné infrastruktury brokerů.

Pro bezproblémovou integraci systémů založených na Kafce nabízí Oracle dvě klíčové možnosti:

  1. Kafka Java Client pro TxEventQ (OKafka) – náhradní cesta bez zprostředkovatele.
  2. Kafka Connect Source a Sink konektory pro TxEventQ – most mezi databází Oracle a stávajícími clustery Kafka.

Každý přístup slouží jiné potřebě – buď zjednodušení vašeho stacku, nebo umožnění hybridní interoperability.

Možnost A: Kafka Java klient pro TxEventQ (OKafka)

Co to je

OKafka je Java klient kompatibilní s Kafkou, který nahrazuje externího Kafka brokera samotnou databází Oracle. Implementuje známá Kafka API, jako například ProducerConsumerAdmin, ale směruje zprávy přes JDBC a AQ do témat TxEventQ uvnitř databáze.
To umožňuje stávajícím Kafka aplikacím běžet s minimálními změnami – většinou úpravami konfigurace.

Jak to funguje

V cestě OKafka se témata Kafka mapují přímo na fronty TxEventQ.
Oddíly odpovídají oddílům na úrovni databáze a offsety jsou udržovány transakčním způsobem.
Každá operace zařazení do fronty (produce) a vyřazení z fronty (consume) se účastní stejné transakce Oracle, což zaručuje atomicitu a sémantiku přesně jednou.

Váš kód producenta a spotřebitele zůstává téměř identický; pouze odkazujete bootstrap.serversna posluchač Oracle, konfigurujete přihlašovací údaje JDBC nebo peněženky a používáte názvy témat psané velkými písmeny.
Databáze Oracle funguje jak jako úložiště událostí, tak jako zprostředkovatel zpráv, který automaticky udržuje perzistenci, řazení a obnovu.

Základy nastavení

  1. Ujistěte se, že používáte Oracle Database 21c nebo novější, kde je k dispozici TxEventQ.
  2. Vytvořte nebo udělte uživateli oprávnění AQ (DBMS_AQADMDBMS_AQ, atd.).
  3. Nastavte vhodný STREAMS_POOL_SIZEposluchač databáze a ujistěte se, že je dosažitelný.
  4. Přidejte knihovny OKafka a Oracle JDBC/AQ do cesty tříd vaší aplikace.
  5. Vytvořte téma TxEventQ DBMS_AQADM.CREATE_DATABASE_KAFKA_TOPICa odkazujte na něj z vašeho producenta.

Příklad použití

Properties props = new Properties();
props.put("bootstrap.servers", "dbhost:1521");
props.put("oracle.service.name", "ORCLPDB1");
props.put("security.protocol", "PLAINTEXT");
props.put("oracle.net.tns_admin", "/path/to/tns");

AdminClient admin = AdminClient.create(props);
NewTopic topic = new NewTopic("MY_TOPIC", 3, (short)1);
admin.createTopics(Collections.singleton(topic)).all().get();

KafkaProducer producer =
    new KafkaProducer<>(props, new StringSerializer(), new StringSerializer());
producer.send(new ProducerRecord<>("MY_TOPIC", "key", "value")).get();
producer.close();
admin.close();

Výhody a nevýhody

Výhody

  • Minimální změny kódu oproti stávajícím klientům Kafka.
  • Silné transakční záruky pro produkci a spotřebu.
  • Jednodušší stack – žádní externí brokeři k provozu.
  • Nižší latence pro pracovní postupy v databázi.

Nevýhody

  • Škálování závisí spíše na databázových zdrojích než na distribuovaném brokeru.
  • Některá API nebo funkce Kafky jsou omezené.
  • Úzké propojení mezi databází a infrastrukturou pro zasílání zpráv.
  • Pozorovatelnost se liší od nativního modelu nástrojů Kafka.

Možnost B: Kafka Connect Source a Sink konektory pro TxEventQ

Co to je

Pro týmy, které si chtějí zachovat cluster Kafka, ale integrovat ho s databází Oracle, nabízejí konektory Kafka Connect praktický most.
Sink Connector přesouvá data z témat Kafka do TxEventQ, zatímco Source Connector streamuje zprávy z témat TxEventQ zpět do Kafka.
To umožňuje hybridní streamování, obousměrnou synchronizaci a postupné migrační scénáře.

Jak to funguje

JAR soubor konektoru TxEventQ nasadíte do Kafka Connect workerů.
Konektor používá Oracle JMS a JDBC k interakci s TxEventQ a mapování zpráv JMS na záznamy Kafka.
Konfigurační soubory definují URL databáze, cestu k peněžence, názvy témat/front a možnosti dávkování.
Kafka Connect spravuje offsety, škálování a logiku opakování.

Příklady konfigurací

Konektor jímky (Kafka → TxEventQ)

Zdrojový konektor (TxEventQ → Kafka)

Výhody a nevýhody

Výhody

  • Zachovává stávající pracovní postupy Kafka a zároveň zavádí streamování databáze Oracle.
  • Ideální pro hybridní nebo postupné zavádění.
  • Využívá ekosystém a monitorování Kafka Connect.
  • Horizontálně se škáluje s úkoly pracovníků.

Nevýhody

  • Dodatečná latence přes most Connect.
  • Vyžaduje provoz infrastruktury Kafka Connect.
  • Omezené transakční propojení mezi systémy.
  • Vyžaduje sladění verzí napříč Kafka Connect, konektorem a databází Oracle.

Volba správné cesty

Aspekt OKafka (Java klient) Kafka Connect Bridge
Primární cíl Nahraďte Kafku systémem pro zasílání zpráv v databázi Integrace nebo propojení Oracle a Kafka
Složitost Nízká – pouze databáze + klient Vyšší – vyžaduje Kafka Connect
Latence Nejnižší, bez externího skákání Mírně vyšší
Transakční integrace Plná ACID v rámci DB Nejlepší úsilí napříč systémy
Flexibilita Vhodné pro aplikace zaměřené na databáze Ideální pro hybridní ekosystémy
Škálovací model Vertikální (zdroje databáze) Horizontální (Kafkovští dělníci)

Doporučení:
Při konsolidaci úloh v rámci databáze Oracle nebo v případech, kdy je transakční konzistence klíčová, používejte OKafku.
Při spolupráci s externími systémy nebo postupné migraci z clusterů Kafka používejte most Kafka Connect.


Závěrem

Oracle TxEventQ nabízí dva doplňkové způsoby propojení světa databází pomocí streamování událostí ve stylu Kafka. Klientská cesta OKafka
přináší jednoduchost a transakční hloubku pro databázově nativní mikroslužby, zatímco most Kafka Connect nabízí interoperabilitu pro hybridní nasazení. Společně dávají architektům svobodu volby mezi integrovaným a federovaným streamováním – bez kompromisů ve spolehlivosti nebo integritě podnikových dat.

Zdroj: Oracle