SlideShare a Scribd company logo
A High-Speed Data Ingestion Service in
Java Using MQTT, AMQP, and STOMP
The Developer’s Conference – TDC Connections 2023
Juarez Barbosa Junior - @juarezjunior
March 2023
Copyright © 2022, Oracle and/or its affiliates
Agenda
• Java App Dev with Oracle Database
• Support for the Latest Java Versions
• MOM, ActiveMQ, AMQP, MQTT, STOMP, REST
• Reactive Streams Ingestion (RSI) and RSI PushPublisher
• ActiveMQ and JMS Message Consumer
• Sample Architecture
• Project Structure
• Demo: Running the Sample App
• Live Labs
• Free Oracle Cloud Account
• Oracle ACE Program
• Thank you – Juarez Jr
Copyright © 2022, Oracle and/or its affiliates
Copyright © 2022, Oracle and/or its affiliates
Java App Dev with Oracle Database
Copyright © 2022, Oracle and/or its affiliates
Support for the Latest Java Versions
• Java 11 - native support, compiled with it
• Java 17 - certified
• JDBC Standards - 4.2 and 4.3
• JMS 1.1 - latest is 2.0
• GraalVM - native image instrumentation
• Reactive Streams - Java Flow API support
• Project Loom - Virtual Threads support
• Data access is critical in mission-critical apps
Copyright © 2022, Oracle and/or its affiliates
MOM - Message-Oriented Middleware
• A middleware component that allows
communication and exchanges the data
(messages).
• It involves passing data between applications
using a communication channel that carries self-
contained units of information (messages).
• In a MOM-based communication environment,
messages are sent and received asynchronously.
• Apache ActiveMQ
AMQP – Advanced Message
Queuing Protocol
• The Advanced Message Queuing Protocol
(AMQP) is an open standard for passing
business messages between applications or
organizations.
• Organizations – applications in different
organizations
• Technologies – applications on different
platforms
• Time – systems don’t need to be available
simultaneously
• Space – reliably operates at a distance, or
over poor networks
Copyright © 2022, Oracle and/or its affiliates
AMQP – Advanced Message
Queuing Protocol
• The Advanced Message Queuing Protocol
(AMQP) is an open standard for passing
business messages between applications or
organizations.
• Realize the savings commoditization
brings; remove vendor lock-in
• Connect applications on different
platforms; choose the right platform for
the job
• Connect to business partners using a full-
featured open standard; remove
technical barriers to trade
• Position for innovations built upon the
foundation of AMQP
• Security, Reliability, Interoperability,
Standard, Openness
Copyright © 2022, Oracle and/or its affiliates
MQTT – Message Queuing
Telemetry Transport
• An OASIS standard messaging protocol for
the Internet of Things (IoT). It is designed as
an extremely lightweight publish/subscribe
messaging transport that is ideal for
connecting remote devices with a small code
footprint and minimal network bandwidth.
Copyright © 2022, Oracle and/or its affiliates
STOMP – Simple (or
Streaming) Text Orientated
Messaging Protocol
• STOMP provides an interoperable wire
format so that STOMP clients can
communicate with any STOMP message
broker to provide easy and widespread
messaging interoperability among many
languages, platforms and brokers..
Copyright © 2022, Oracle and/or its affiliates
Copyright © 2022, Oracle and/or its affiliates
Reactive Streams Ingestion (RSI)
⚫ PushPublisher API
// Push Publisher for Simple Usage
PushPublisher<Customer> pushPublisher =
ReactiveStreamsIngestion.pushPublisher();
pushPublisher.subscribe(rsi.subscriber());
// Ad-hoc usage
pushPublisher.accept(
new Customer(1, "John Doe", "North"));
// As a Consumer of a Stream
Customer[] customers = …
Stream
.of(customers)
.filter(c -> c.region.equals("NORTH"))
.forEach(pushPublisher::accept);
// As a Consumer for 3rd party Reactive Stream
// Libraries eg: Reactor https://projectreactor.io/
Flux
.just(
new Customer(1, "John Doe", "North"),
new Customer(2, "Jane Smith", "South"))
.concatWithValues(new Customer(3, "Bob", "South"))
.doOnComplete(() -> {System.out.println("Done!");})
.doOnCancel(() -> {System.out.println("Canceled!");})
.subscribe(pushPublisher::accept);
Copyright © 2022, Oracle and/or its affiliates
Reactive Streams Ingestion (RSI)
⚫ Java Library for Reactive Streams Ingestion
⚫ Streaming capability: Ingest data in an unblocking, and
reactive way from a large group of clients
⚫ Group records through RAC (Real App Clusters),
and Shard affinity using native UCP (Universal Connection
Pool)
⚫ Optimize CPU allocation while decoupling record
Processing from I/O
⚫ Fastest insert method for the Oracle Database through
Direct Path Insert, bypassing SQL and writing directly into the DB files
Copyright © 2022, Oracle and/or its affiliates
Reactive Streams Ingestion (RSI)
⚫ Java Library for Reactive Streams Ingestion
⚫ Streaming capability: Ingest data in an unblocking, and
reactive way from a large group of clients
⚫ Group records through RAC (Real App Clusters),
and Shard affinity using native UCP (Universal Connection
Pool)
⚫ Optimize CPU allocation while decoupling record
Processing from I/O
⚫ Fastest insert method for the Oracle Database through
Direct Path Insert, bypassing SQL and writing directly into the DB files
Copyright © 2022, Oracle and/or its affiliates
Overview of Oracle DB Access with Java
User
Java
Code
JDBC
Reactive
Extension Standard
JDBC API
R2DBC
+
3rd party
Reactive
Streams
Libraries
Async call with non-blocking
backpressure
operators (map, reduce, filters),
concurrency modeling,
monitoring, tracing
Implements Java SE
reactive stream
interface (Flow)
Full Reactive
Streams
Sync/blocking JDBC calls
Java
Business
Logic
User Java code
Oracle
Database
Oracle JDBC
driver
VTs/lightweight JDBC calls
Copyright © 2022, Oracle and/or its affiliates
ActiveMQ & JMS Message Consumer
⚫ ActiveMQ
⚫ ActiveMQ is a Java-based open-source message broker which supports REST API and
various wire-level protocols, such as MQTT, AMQP, and STOMP.
⚫ JMS Message Consumer
⚫ Like with any messaging-based application, you need to create a receiver that will
handle the messages that have been sent. The sample code snippet creates an AMQP
connection that connects to ActiveMQ using the given username, password,
hostname, and port number.
⚫ Port number 5672 is the default port that ActiveMQ is listening to over the AMQP
protocol when it starts up. It also creates a topic subscriber (consumer) to receive
messages that have been published to the "event" topic.
Copyright © 2022, Oracle and/or its affiliates
ActiveMQ & JMS Message Consumer
Copyright © 2022, Oracle and/or its affiliates
Demo Architecture
Copyright © 2022, Oracle and/or its affiliates
Project Structure
Copyright © 2022, Oracle and/or its affiliates
Demo: Running the Sample Demo
Container
Pipelines,
Jenkins, etc.
Build
Test
Push
Push Docker
images to
Registry
Cloud
Infrastructur
e Registry
Container
Engine for
Kubernetes
Pull images
from Registry
Deploy
images to
production
Kubernetes
worker nodes
Containers
running
microservices
deployed over
Kubernetes
ORACLE CLOUD INFRASTRUCTURE
ATP, ADW, ATP-D,
AFDW-D
Memoptimized
Rowstore
RSI Runtime: Non-
blocking, optimized library
for streaming data
through Direct Path, Shard
& RAC/FAN support.
HTTP / REST Engine over
Helidon
Define build
for CI/CD
toolchain
gRPC / AMQP / MQTT
Engines
Microservices
Files / Logs
IoT
Devices
/
Apps
cv
MQTT
gRPC
AMQP
HTTP / REST
JDBC
Direct Path
INSERT
Record
Streaming
over
multiple
protocols.
About me
• Juarez Barbosa Junior - @juarezjunior
• Senior Principal Java Developer Evangelist
• 27 years of experience
• SW Engineering, Developer Relations
• Microsoft, Oracle, IBM, Nokia, Unisys, Accenture, and a
few startups
• Microsoft Azure Developer Relations Lead
• IBM Watson Tech Evangelist & Cloud Rockstar
• IBM Mobile Tech Evangelist & Global Thought Leader
• Nokia Developers Global Champion
• Lead Software/DevOps Architect
• Expertise
• Java, Cloud, DevOps, Cloud-native, Blockchain
Copyright © 2022, Oracle and/or its affiliates
Oracle LiveLabs
Showcasing how Oracle’s solutions can
solve your business problems
500+
free workshops,
available or in
development
3.5 million
people have already visited
LiveLabs
developer.oracle.com/livelabs
learn something new …at your pace!
600+
events run
using LiveLabs
workshops
Create your FREE
Cloud Account
• Go to
https://signup.cloud.oracle.com/
Copyright © 2022, Oracle and/or its affiliates
3 membership tiers
Connect: @oracleace facebook.com/OracleACEs
aceprogram_ww@oracle.com
500+ technical experts &
community leaders helping peers globally
The Oracle ACE Program recognizes & rewards individuals for
their technical & community contributions to the Oracle community
Nominate
yourself or a candidate:
ace.oracle.com/nominate
Learn more - ace.oracle.com
blogs.oracle.com/ace
Thank you!
23
Copyright © 2022, Oracle and/or its affiliates | Confidential: Internal

More Related Content

Similar to TDC Connections 2023 - A High-Speed Data Ingestion Service in Java Using MQTT, AMQP, and STOMP (20)

PPTX
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
Justin Reock
 
PPTX
Integrating Postgres with ActiveMQ and Camel
Justin Reock
 
PDF
IBM IMPACT 2014 AMC-1866 Introduction to IBM Messaging Capabilities
Peter Broadhurst
 
PDF
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
DATAVERSITY
 
PDF
AI Industrial Summit - SOFIA, BULGARIA - A High-Speed Data Ingestion Microser...
Juarez Junior
 
PPTX
IBM MQ vs Apache ActiveMQ
Roman Kharkovski
 
PPTX
JMS Providers Overview
Vadym Lotar
 
PDF
Messaging in Java
Dmitry Buzdin
 
PDF
Cloud Conference Day - Revolutionize Java Database App Development with React...
Juarez Junior
 
PDF
CloudTalks - Revolutionize Java DB AppDev with Reactive Streams and Virtual T...
Juarez Junior
 
PDF
Building Scalable & Reliable MQTT Clients for Enterprise Computing
SilvioGiebl
 
PPTX
19 08-22 introduction to activeMQ
Woo Young Choi
 
PDF
Ranker jms implementation
EosSoftware
 
PPT
Amqp Basic
Rahul Agrawal
 
PDF
Streaming to a new Jakarta EE / JOTB19
Markus Eisele
 
ODP
RestMS Introduction
pieterh
 
ODP
Are you weak in the middle?
FSCONS
 
PPTX
Componenets of osb12c
TUSHAR VARSHNEY
 
PDF
Building Scalable & Reliable MQTT Clients for Enterprise Computing
HiveMQ
 
PDF
DWX23 - Revolutionize Java DB AppDev with Reactive Streams and Virtual Threads
Juarez Junior
 
ZendCon - Integration and Asynchronous Processing with ActiveMQ and Camel
Justin Reock
 
Integrating Postgres with ActiveMQ and Camel
Justin Reock
 
IBM IMPACT 2014 AMC-1866 Introduction to IBM Messaging Capabilities
Peter Broadhurst
 
ADV Slides: Trends in Streaming Analytics and Message-oriented Middleware
DATAVERSITY
 
AI Industrial Summit - SOFIA, BULGARIA - A High-Speed Data Ingestion Microser...
Juarez Junior
 
IBM MQ vs Apache ActiveMQ
Roman Kharkovski
 
JMS Providers Overview
Vadym Lotar
 
Messaging in Java
Dmitry Buzdin
 
Cloud Conference Day - Revolutionize Java Database App Development with React...
Juarez Junior
 
CloudTalks - Revolutionize Java DB AppDev with Reactive Streams and Virtual T...
Juarez Junior
 
Building Scalable & Reliable MQTT Clients for Enterprise Computing
SilvioGiebl
 
19 08-22 introduction to activeMQ
Woo Young Choi
 
Ranker jms implementation
EosSoftware
 
Amqp Basic
Rahul Agrawal
 
Streaming to a new Jakarta EE / JOTB19
Markus Eisele
 
RestMS Introduction
pieterh
 
Are you weak in the middle?
FSCONS
 
Componenets of osb12c
TUSHAR VARSHNEY
 
Building Scalable & Reliable MQTT Clients for Enterprise Computing
HiveMQ
 
DWX23 - Revolutionize Java DB AppDev with Reactive Streams and Virtual Threads
Juarez Junior
 

More from Juarez Junior (20)

PDF
WeAreDevelopers Berlin - Blazingly Fast GenAI App Development With Java and S...
Juarez Junior
 
PDF
WeAreDevelopers Berlin - LangChain4J - A Guide for Impatient Developers
Juarez Junior
 
PDF
Build Stuff Lithuania - Blazingly Fast GenAI App Development With Java and Sp...
Juarez Junior
 
PDF
DUBJUG-Simplifying Data Access with Jakarta Data for Domain-Driven Design
Juarez Junior
 
PDF
Cloud Lunch and Learn -Microsoft Semantic Kernel for Java
Juarez Junior
 
PDF
Compass AI Budapest -The Trinity in GenAI - Spring AI, LangChain4J and OpenAI
Juarez Junior
 
PDF
GSAS - Global Software Architecture Summit - GenAI-Architectural-Blueprints
Juarez Junior
 
PDF
BaselOne_Langchain4J - A Guide for Impatient Developers
Juarez Junior
 
PDF
DeveloperWeek USA - A Solid Foundation for GenAI Apps - Exploring Architectur...
Juarez Junior
 
PDF
I Love Tech Romania - Blazingly Fast GenAI App Development With Java and Spri...
Juarez Junior
 
PDF
I Love Tech Romania - The Trinity in GenAI - Spring AI, LangChain4J and OpenAI
Juarez Junior
 
PDF
DUBJUG_Blazingly Fast GenAI App Development With Java and Spring AI.pdf
Juarez Junior
 
PDF
DUBJUG_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
Juarez Junior
 
PDF
I Love Tech Romania - A High-Speed Data Ingestion Microservice in Java Using ...
Juarez Junior
 
PDF
DevTalks Cluj Romania - A Solid Foundation for GenAI Apps.pdf
Juarez Junior
 
PDF
Quarkus Club_Java Virtual Threads & Pipelined Database Operations
Juarez Junior
 
PDF
Quarkus Club_Revolutionize Java Database App Development with Reactive Stream...
Juarez Junior
 
PDF
TDC - The Developers Conference - The Trinity in GenAI - Spring AI, LangChain...
Juarez Junior
 
PDF
TDC - The Developers Conference - Creating GenAI Apps in Java with SD4J and t...
Juarez Junior
 
PDF
TDC - The Developers Conference - An Introduction to Machine Learning in Java...
Juarez Junior
 
WeAreDevelopers Berlin - Blazingly Fast GenAI App Development With Java and S...
Juarez Junior
 
WeAreDevelopers Berlin - LangChain4J - A Guide for Impatient Developers
Juarez Junior
 
Build Stuff Lithuania - Blazingly Fast GenAI App Development With Java and Sp...
Juarez Junior
 
DUBJUG-Simplifying Data Access with Jakarta Data for Domain-Driven Design
Juarez Junior
 
Cloud Lunch and Learn -Microsoft Semantic Kernel for Java
Juarez Junior
 
Compass AI Budapest -The Trinity in GenAI - Spring AI, LangChain4J and OpenAI
Juarez Junior
 
GSAS - Global Software Architecture Summit - GenAI-Architectural-Blueprints
Juarez Junior
 
BaselOne_Langchain4J - A Guide for Impatient Developers
Juarez Junior
 
DeveloperWeek USA - A Solid Foundation for GenAI Apps - Exploring Architectur...
Juarez Junior
 
I Love Tech Romania - Blazingly Fast GenAI App Development With Java and Spri...
Juarez Junior
 
I Love Tech Romania - The Trinity in GenAI - Spring AI, LangChain4J and OpenAI
Juarez Junior
 
DUBJUG_Blazingly Fast GenAI App Development With Java and Spring AI.pdf
Juarez Junior
 
DUBJUG_Creating GenAI Apps in Java with SD4J and the ONNX Runtime
Juarez Junior
 
I Love Tech Romania - A High-Speed Data Ingestion Microservice in Java Using ...
Juarez Junior
 
DevTalks Cluj Romania - A Solid Foundation for GenAI Apps.pdf
Juarez Junior
 
Quarkus Club_Java Virtual Threads & Pipelined Database Operations
Juarez Junior
 
Quarkus Club_Revolutionize Java Database App Development with Reactive Stream...
Juarez Junior
 
TDC - The Developers Conference - The Trinity in GenAI - Spring AI, LangChain...
Juarez Junior
 
TDC - The Developers Conference - Creating GenAI Apps in Java with SD4J and t...
Juarez Junior
 
TDC - The Developers Conference - An Introduction to Machine Learning in Java...
Juarez Junior
 
Ad

Recently uploaded (20)

PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PDF
July Patch Tuesday
Ivanti
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Empower Inclusion Through Accessible Java Applications
Ana-Maria Mihalceanu
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
From Code to Challenge: Crafting Skill-Based Games That Engage and Reward
aiyshauae
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
July Patch Tuesday
Ivanti
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Ad

TDC Connections 2023 - A High-Speed Data Ingestion Service in Java Using MQTT, AMQP, and STOMP

  • 1. A High-Speed Data Ingestion Service in Java Using MQTT, AMQP, and STOMP The Developer’s Conference – TDC Connections 2023 Juarez Barbosa Junior - @juarezjunior March 2023 Copyright © 2022, Oracle and/or its affiliates
  • 2. Agenda • Java App Dev with Oracle Database • Support for the Latest Java Versions • MOM, ActiveMQ, AMQP, MQTT, STOMP, REST • Reactive Streams Ingestion (RSI) and RSI PushPublisher • ActiveMQ and JMS Message Consumer • Sample Architecture • Project Structure • Demo: Running the Sample App • Live Labs • Free Oracle Cloud Account • Oracle ACE Program • Thank you – Juarez Jr Copyright © 2022, Oracle and/or its affiliates
  • 3. Copyright © 2022, Oracle and/or its affiliates Java App Dev with Oracle Database
  • 4. Copyright © 2022, Oracle and/or its affiliates Support for the Latest Java Versions • Java 11 - native support, compiled with it • Java 17 - certified • JDBC Standards - 4.2 and 4.3 • JMS 1.1 - latest is 2.0 • GraalVM - native image instrumentation • Reactive Streams - Java Flow API support • Project Loom - Virtual Threads support • Data access is critical in mission-critical apps
  • 5. Copyright © 2022, Oracle and/or its affiliates MOM - Message-Oriented Middleware • A middleware component that allows communication and exchanges the data (messages). • It involves passing data between applications using a communication channel that carries self- contained units of information (messages). • In a MOM-based communication environment, messages are sent and received asynchronously. • Apache ActiveMQ
  • 6. AMQP – Advanced Message Queuing Protocol • The Advanced Message Queuing Protocol (AMQP) is an open standard for passing business messages between applications or organizations. • Organizations – applications in different organizations • Technologies – applications on different platforms • Time – systems don’t need to be available simultaneously • Space – reliably operates at a distance, or over poor networks Copyright © 2022, Oracle and/or its affiliates
  • 7. AMQP – Advanced Message Queuing Protocol • The Advanced Message Queuing Protocol (AMQP) is an open standard for passing business messages between applications or organizations. • Realize the savings commoditization brings; remove vendor lock-in • Connect applications on different platforms; choose the right platform for the job • Connect to business partners using a full- featured open standard; remove technical barriers to trade • Position for innovations built upon the foundation of AMQP • Security, Reliability, Interoperability, Standard, Openness Copyright © 2022, Oracle and/or its affiliates
  • 8. MQTT – Message Queuing Telemetry Transport • An OASIS standard messaging protocol for the Internet of Things (IoT). It is designed as an extremely lightweight publish/subscribe messaging transport that is ideal for connecting remote devices with a small code footprint and minimal network bandwidth. Copyright © 2022, Oracle and/or its affiliates
  • 9. STOMP – Simple (or Streaming) Text Orientated Messaging Protocol • STOMP provides an interoperable wire format so that STOMP clients can communicate with any STOMP message broker to provide easy and widespread messaging interoperability among many languages, platforms and brokers.. Copyright © 2022, Oracle and/or its affiliates
  • 10. Copyright © 2022, Oracle and/or its affiliates Reactive Streams Ingestion (RSI) ⚫ PushPublisher API // Push Publisher for Simple Usage PushPublisher<Customer> pushPublisher = ReactiveStreamsIngestion.pushPublisher(); pushPublisher.subscribe(rsi.subscriber()); // Ad-hoc usage pushPublisher.accept( new Customer(1, "John Doe", "North")); // As a Consumer of a Stream Customer[] customers = … Stream .of(customers) .filter(c -> c.region.equals("NORTH")) .forEach(pushPublisher::accept); // As a Consumer for 3rd party Reactive Stream // Libraries eg: Reactor https://projectreactor.io/ Flux .just( new Customer(1, "John Doe", "North"), new Customer(2, "Jane Smith", "South")) .concatWithValues(new Customer(3, "Bob", "South")) .doOnComplete(() -> {System.out.println("Done!");}) .doOnCancel(() -> {System.out.println("Canceled!");}) .subscribe(pushPublisher::accept);
  • 11. Copyright © 2022, Oracle and/or its affiliates Reactive Streams Ingestion (RSI) ⚫ Java Library for Reactive Streams Ingestion ⚫ Streaming capability: Ingest data in an unblocking, and reactive way from a large group of clients ⚫ Group records through RAC (Real App Clusters), and Shard affinity using native UCP (Universal Connection Pool) ⚫ Optimize CPU allocation while decoupling record Processing from I/O ⚫ Fastest insert method for the Oracle Database through Direct Path Insert, bypassing SQL and writing directly into the DB files
  • 12. Copyright © 2022, Oracle and/or its affiliates Reactive Streams Ingestion (RSI) ⚫ Java Library for Reactive Streams Ingestion ⚫ Streaming capability: Ingest data in an unblocking, and reactive way from a large group of clients ⚫ Group records through RAC (Real App Clusters), and Shard affinity using native UCP (Universal Connection Pool) ⚫ Optimize CPU allocation while decoupling record Processing from I/O ⚫ Fastest insert method for the Oracle Database through Direct Path Insert, bypassing SQL and writing directly into the DB files
  • 13. Copyright © 2022, Oracle and/or its affiliates Overview of Oracle DB Access with Java User Java Code JDBC Reactive Extension Standard JDBC API R2DBC + 3rd party Reactive Streams Libraries Async call with non-blocking backpressure operators (map, reduce, filters), concurrency modeling, monitoring, tracing Implements Java SE reactive stream interface (Flow) Full Reactive Streams Sync/blocking JDBC calls Java Business Logic User Java code Oracle Database Oracle JDBC driver VTs/lightweight JDBC calls
  • 14. Copyright © 2022, Oracle and/or its affiliates ActiveMQ & JMS Message Consumer ⚫ ActiveMQ ⚫ ActiveMQ is a Java-based open-source message broker which supports REST API and various wire-level protocols, such as MQTT, AMQP, and STOMP. ⚫ JMS Message Consumer ⚫ Like with any messaging-based application, you need to create a receiver that will handle the messages that have been sent. The sample code snippet creates an AMQP connection that connects to ActiveMQ using the given username, password, hostname, and port number. ⚫ Port number 5672 is the default port that ActiveMQ is listening to over the AMQP protocol when it starts up. It also creates a topic subscriber (consumer) to receive messages that have been published to the "event" topic.
  • 15. Copyright © 2022, Oracle and/or its affiliates ActiveMQ & JMS Message Consumer
  • 16. Copyright © 2022, Oracle and/or its affiliates Demo Architecture
  • 17. Copyright © 2022, Oracle and/or its affiliates Project Structure
  • 18. Copyright © 2022, Oracle and/or its affiliates Demo: Running the Sample Demo Container Pipelines, Jenkins, etc. Build Test Push Push Docker images to Registry Cloud Infrastructur e Registry Container Engine for Kubernetes Pull images from Registry Deploy images to production Kubernetes worker nodes Containers running microservices deployed over Kubernetes ORACLE CLOUD INFRASTRUCTURE ATP, ADW, ATP-D, AFDW-D Memoptimized Rowstore RSI Runtime: Non- blocking, optimized library for streaming data through Direct Path, Shard & RAC/FAN support. HTTP / REST Engine over Helidon Define build for CI/CD toolchain gRPC / AMQP / MQTT Engines Microservices Files / Logs IoT Devices / Apps cv MQTT gRPC AMQP HTTP / REST JDBC Direct Path INSERT Record Streaming over multiple protocols.
  • 19. About me • Juarez Barbosa Junior - @juarezjunior • Senior Principal Java Developer Evangelist • 27 years of experience • SW Engineering, Developer Relations • Microsoft, Oracle, IBM, Nokia, Unisys, Accenture, and a few startups • Microsoft Azure Developer Relations Lead • IBM Watson Tech Evangelist & Cloud Rockstar • IBM Mobile Tech Evangelist & Global Thought Leader • Nokia Developers Global Champion • Lead Software/DevOps Architect • Expertise • Java, Cloud, DevOps, Cloud-native, Blockchain Copyright © 2022, Oracle and/or its affiliates
  • 20. Oracle LiveLabs Showcasing how Oracle’s solutions can solve your business problems 500+ free workshops, available or in development 3.5 million people have already visited LiveLabs developer.oracle.com/livelabs learn something new …at your pace! 600+ events run using LiveLabs workshops
  • 21. Create your FREE Cloud Account • Go to https://signup.cloud.oracle.com/ Copyright © 2022, Oracle and/or its affiliates
  • 22. 3 membership tiers Connect: @oracleace facebook.com/OracleACEs [email protected] 500+ technical experts & community leaders helping peers globally The Oracle ACE Program recognizes & rewards individuals for their technical & community contributions to the Oracle community Nominate yourself or a candidate: ace.oracle.com/nominate Learn more - ace.oracle.com blogs.oracle.com/ace
  • 23. Thank you! 23 Copyright © 2022, Oracle and/or its affiliates | Confidential: Internal