About Olga
Staff Software Engineer in Spring Cloud team
Spring Cloud LoadBalancer, Spring Cloud OpenFeign, Spring
Cloud Netflix, AOT and native image support in Spring Cloud
projects, Spring Interface Clients
Slide 3
Slide 3 text
What is a declarative client?
Slide 4
Slide 4 text
Sample applications
Customer Service Verification Service
HTTP POST /verify
Customer Verification Result
Slide 5
Slide 5 text
Direct use of HTTP client
Slide 6
Slide 6 text
Client interface
Slide 7
Slide 7 text
Implementation
Slide 8
Slide 8 text
Implementation with helper methods
Slide 9
Slide 9 text
Client interface usage
Slide 10
Slide 10 text
Annotated interface ⭆ HTTP calls
Libraries/ frameworks already do it for us!
Load-balancing
Use instrumented WebClient/ RestClient/ RestTemplate
Slide 63
Slide 63 text
DiscoveryClient
Eureka
Consul
Zookeeper
Kubernetes
SimpleDiscoveryClient
Slide 64
Slide 64 text
No content
Slide 65
Slide 65 text
Load-balanced client builder bean
You can use @LoadBalanced
as qualifier
serviceId in place of host:port
Slide 66
Slide 66 text
Load-balanced client builder bean
You can use @LoadBalanced
as qualifier
serviceId in place of host:port
Slide 67
Slide 67 text
Load-balanced client bean
You can use @LoadBalanced
as qualifier
serviceId in place of host:port
Slide 68
Slide 68 text
Tracing
Provided by instrumented WebClient/ RestClient/ RestTemplate
Slide 69
Slide 69 text
@HtttpExchange
on server side
Slide 70
Slide 70 text
No content
Slide 71
Slide 71 text
Spring Interface Clients
RSocket
Slide 72
Slide 72 text
RSocket
Reactive Streams semantics on protocol level
● Message-driven, asynchronous
● No client/ server distinction once connection is made
● 4 modes
○ Fire and Forget
○ Request/ Response
○ Request/ Stream
○ Channel