舉報

會員
Hands-On Reactive Programming in Spring 5
Thesedays,businessesneedanewtypeofsystemthatcanremainresponsiveatalltimes.Thisisachievablewithreactiveprogramming;however,thedevelopmentofthesekindsofsystemsisacomplextask,requiringadeepunderstandingofthedomain.Inordertodevelophighlyresponsivesystems,thedevelopersoftheSpringFrameworkcameupwithProjectReactor.Hands-OnReactiveProgramminginSpring5beginswiththefundamentalsofSpringReactiveprogramming.You’llexploretheendlesspossibilitiesofbuildingefficientreactivesystemswiththeSpring5FrameworkalongwithothertoolssuchasWebFluxandSpringBoot.Furtheron,you’llstudyreactiveprogrammingtechniquesandapplythemtodatabasesandcross-servercommunication.YouwilladvanceyourskillsinscalingupSpringCloudStreamsandrunindependent,high-performantreactivemicroservices.Bytheendofthebook,youwillbeabletoputyourskillstouseandgetonboardwiththereactiverevolutioninSpring5.1!
最新章節
- Leave a review - let other readers know what you think
- Other Books You May Enjoy
- Summary
- Bits of advice for successful application deployment
- Knative for FaaS over Kubernetes and Istio
- Configurationless deployment with Spring Cloud Data Flow for PCF
品牌:中圖公司
上架時間:2021-07-23 15:42:19
出版社:Packt Publishing
本書數字版權由中圖公司提供,并由其授權上海閱文信息技術有限公司制作發行
- Leave a review - let other readers know what you think 更新時間:2021-07-23 16:37:22
- Other Books You May Enjoy
- Summary
- Bits of advice for successful application deployment
- Knative for FaaS over Kubernetes and Istio
- Configurationless deployment with Spring Cloud Data Flow for PCF
- Discovering MongoDB in PCF
- Discovering RabbitMQ in PCF
- Deploying to Pivotal Cloud Foundry
- Deploying to the Google Kubernetes Engine
- Deploying to Amazon Web Services
- Deploying to the cloud
- Pretty UI with Spring Boot Admin 2.x
- Distributed tracing with Spring Boot Sleuth
- Adding custom Micrometer meters
- Monitoring reactor schedulers
- Monitoring reactor flows
- Monitoring Reactive Streams
- Default Spring Boot metrics
- Micrometer
- Securing actuator endpoints
- Writing custom actuator endpoints
- Other valuable endpoints
- Loggers management endpoint
- Metrics endpoint
- Health information endpoint
- Service info endpoint
- Adding an actuator to the project
- Spring Boot Actuator
- Monitoring the Reactive Spring application
- The importance of DevOps-friendly apps
- And Finally Release It!
- Summary
- Testing WebSocket
- Testing Controllers with WebTestClient
- Testing WebFlux
- Verifying reactive context
- Dealing with virtual time
- Advanced testing with StepVerifier
- Essentials of StepVerifier
- Testing reactive streams with StepVerifier
- Why are reactive streams hard to test?
- Testing the Reactive Application
- Summary
- Summarizing RSocket
- The Proteus Project
- The ScaleCube Project
- RSocket in other frameworks
- RSocket in Spring Framework
- RSocket versus gRPC
- RSocket in Java
- RSocket versus Reactor-Netty
- RSocket for low-latency reactive message passing
- Spring Cloud – function as a part of a data flow
- The finest-grained application with Spring Cloud Function
- Spring Cloud Data Flow
- Reactive programming in the cloud
- Spring Cloud Streams as a bridge to Spring Ecosystem
- The market of message brokers
- Message brokers as an elastic reliable layer for message transferring
- Client-side load balancing with Spring Cloud and Ribbon
- Server-side load balancing
- Message brokers as the key to message-driven systems
- Scaling Up with Cloud Streams
- Summary
- Reactive Spring Data in action
- Wrapping a synchronous CrudRepository
- Using the rxjava2-jdbc library
- Transforming a synchronous repository into reactive
- Using R2DBC with Spring Data R2DBC
- Reactive Relational Database Connectivity
- Asynchronous Database Access
- Limitations and anticipated improvements
- Reactive Redis connector
- Reactive Couchbase connector
- Reactive Cassandra connector
- Reactive MongoDB connector
- Spring Data reactive connectors
- Distributed transactions with the SAGA pattern
- Reactive transactions with MongoDB 4
- Reactive transactions
- Using asynchronous drivers (Cassandra)
- Using reactive drivers (MongoDB)
- Using ReactiveMongoTemplate
- ReactiveMongoRepository implementation details
- Pagination support
- How reactive repositories work
- Combining repository operations
- Using MongoDB reactive repository
- Reactive data access with Spring Data
- Advantages of the synchronous model
- Limitations of the synchronous model
- Spring Data NoSQL
- Making Spring Data JPA reactive
- Spring Data JPA
- Making JPA reactive
- JPA
- Making Spring Data JDBC reactive
- Spring Data JDBC
- Spring JDBC
- Making relational database access reactive
- Connection management
- JDBC
- Database driver
- Wire protocol for database access
- Synchronous model for data retrieval
- Messaging system as a data store
- Conflict-free replicated data types
- Command Query Responsibility Segregation
- Event sourcing
- The SAGA pattern
- Eventual consistency
- Event-driven architecture
- Distributed transactions
- Sharing data across microservices
- Database as a Service
- Polyglot persistence
- Data stores in the era of microservices
- Domain-driven design
- Data handling patterns in the modern world
- Reactive Database Access
- Summary
- WebFlux in action
- Streaming or real-time systems
- Systems that handle clients with slow connections
- Microservice-based systems
- Application of WebFlux
- Impact of processing models on usability
- Impact of different processing models on memory consumption
- Challenges with the WebFlux processing model
- Impact of processing models on throughput and latency
- Understanding the processing models in WebFlux and Web MVC
- Thorough analysis and comparison
- The Universal Scalability Law
- Amdahl's Law
- Little's Law
- Laws matter when comparing frameworks
- WebFlux versus Web MVC
- Interaction with other reactive libraries
- Enabling reactive security
- Reactive access to SecurityContext
- Reactive web security
- Reactive template engines
- Reactive SSE as a lightweight replacement for WebSockets
- WebFlux WebSocket versus the Spring WebSocket module
- Client-side WebSocket API
- Server-side WebSocket API
- Reactive WebSocket API
- Non-blocking cross-service communication with WebClient
- Purely functional web with WebFlux
- The reactive web and MVC frameworks
- The reactive web core
- WebFlux as a central reactive server foundation
- WebFlux Async Non-Blocking Communication
- Summary
- Reactive in monitoring
- Reactive in Spring Test
- Reactive in Spring Cloud
- Reactive in Spring Security
- Reactive in Spring Session
- Reactive in Spring Data
- Reactive in web
- Reactive I/O
- Support for reactive types conversion
- Reactive in Spring Core
- Reactive in Spring Boot 2.0
- Spring Boot as a key to fast-growing applications
- Using Spring Roo to try to develop applications faster
- A fast start as the key to success
- Going Reactive with Spring Boot 2
- Summary
- Micro-fusion
- Macro-fusion
- Internals of Project Reactor
- Rector Context
- Scheduler
- The parallel operator
- The subscribeOn operator
- Parallelization with the publishOn operator
- The publishOn operator
- The thread scheduling model in Reactor
- Runtime
- Subscription-time
- Assembly-time
- Reactive Streams life cycle
- Advanced Project Reactor
- Reactor Addons
- Testing and debugging Project Reactor
- Processors
- Composing and transforming Reactive Streams
- Dealing with time
- Sharing elements of a stream
- Caching elements of a stream
- Multicasting elements of a stream
- Hot and cold streams
- Backpressure handling
- Handling errors
- Wrapping reactive transactions with the usingWhen factory
- Wrapping disposable resources into Reactive Streams
- Factory method – generate
- Factory methods – push and create
- Creating streams programmatically
- Finding an appropriate operator
- Materializing and dematerializing signals
- Peeking elements while sequence processing
- Transforming reactive sequences into blocking structures
- Sampling elements
- The flatMap concatMap and flatMapSequential operators
- Batching stream elements
- Combining Reactive Streams
- Reducing stream elements
- Collecting reactive sequences
- Filtering reactive sequences
- Mapping elements of reactive sequences
- Transforming reactive sequences with operators
- Implementing custom subscribers
- Subscribing to Reactive Streams
- Creating Flux and Mono sequences
- Completable
- Maybe
- Single
- Flowable
- Observable
- Reactive types of RxJava 2
- Mono
- Flux
- Reactive types – Flux and Mono
- Adding Reactor to the project
- Project Reactor essentials
- Project Reactor version 2.x
- Project Reactor version 1.x
- A brief history of Project Reactor
- Project Reactor - the Foundation for Reactive Apps
- Summary
- A composition of reactive technologies in action
- MongoDB Reactive Streams driver
- Ratpack improvements
- Vert.x adjustments
- RxJava transfiguration
- Transfiguration of the Reactive Landscape
- Advanced - async and parallel in Reactive Streams
- JDK 9
- The Subscriber verification
- The Publisher verification
- Reactive Streams technology compatibility kit
- The introduction of the Processor notion
- Reactive Streams spec in action
- The basics of the Reactive Streams spec
- The solution
- Bounded blocking queue
- Bounded drop queue
- Unbounded queue
- Fast producer and slow consumer
- Slow producer and fast consumer
- The flow control problem
- Pull versus push
- The API's inconsistency problem
- Reactivity for everyone
- Reactive Streams - the New Streams' Standard
- Summary
- Reactive landscape
- Brief history of reactive libraries
- Application configuration
- Exposing the SSE endpoint
- Custom SseEmitter
- Implementing business logic
- Rebuilding our application with RxJava
- Prerequisites and benefits of RxJava
- Zip operator
- Count operator
- Filter operator
- Map operator
- Stream transformation and marble diagrams
- Generating an asynchronous sequence
- Producing and consuming streams
- Observer plus iterator equals Reactive Stream
- RxJava as a reactive framework
- Criticism of the solution
- Verifying application functionality
- Building a UI with SSE support
- Configuring asynchronous support
- Exposing the SSE endpoint
- Asynchronous HTTP with Spring Web MVC
- Implementing business logic
- Bootstrapping a Spring application
- Building applications with @EventListener
- Publish-Subscribe pattern with @EventListener
- Observer pattern usage example
- Observer pattern
- Early reactive solutions in Spring
- Reactive Programming in Spring - Basic Concepts
- Summary
- Reactivity on the service level
- Why Reactive Spring?
- Reactivity use cases
- Message-driven communication
- Why reactive?
- Why Reactive Spring?
- Reviews
- Get in touch
- Conventions used
- Download the color images
- Download the example code files
- To get the most out of this book
- What this book covers
- Who this book is for
- Preface
- Packt is searching for authors like you
- About the reviewers
- About the authors
- Contributors
- Foreword
- Packt.com
- Why subscribe?
- Packt Upsell
- Dedication
- Hands-On Reactive Programming in Spring 5
- Copyright and Credits
- Title Page
- 封面
- 封面
- Title Page
- Copyright and Credits
- Hands-On Reactive Programming in Spring 5
- Dedication
- Packt Upsell
- Why subscribe?
- Packt.com
- Foreword
- Contributors
- About the authors
- About the reviewers
- Packt is searching for authors like you
- Preface
- Who this book is for
- What this book covers
- To get the most out of this book
- Download the example code files
- Download the color images
- Conventions used
- Get in touch
- Reviews
- Why Reactive Spring?
- Why reactive?
- Message-driven communication
- Reactivity use cases
- Why Reactive Spring?
- Reactivity on the service level
- Summary
- Reactive Programming in Spring - Basic Concepts
- Early reactive solutions in Spring
- Observer pattern
- Observer pattern usage example
- Publish-Subscribe pattern with @EventListener
- Building applications with @EventListener
- Bootstrapping a Spring application
- Implementing business logic
- Asynchronous HTTP with Spring Web MVC
- Exposing the SSE endpoint
- Configuring asynchronous support
- Building a UI with SSE support
- Verifying application functionality
- Criticism of the solution
- RxJava as a reactive framework
- Observer plus iterator equals Reactive Stream
- Producing and consuming streams
- Generating an asynchronous sequence
- Stream transformation and marble diagrams
- Map operator
- Filter operator
- Count operator
- Zip operator
- Prerequisites and benefits of RxJava
- Rebuilding our application with RxJava
- Implementing business logic
- Custom SseEmitter
- Exposing the SSE endpoint
- Application configuration
- Brief history of reactive libraries
- Reactive landscape
- Summary
- Reactive Streams - the New Streams' Standard
- Reactivity for everyone
- The API's inconsistency problem
- Pull versus push
- The flow control problem
- Slow producer and fast consumer
- Fast producer and slow consumer
- Unbounded queue
- Bounded drop queue
- Bounded blocking queue
- The solution
- The basics of the Reactive Streams spec
- Reactive Streams spec in action
- The introduction of the Processor notion
- Reactive Streams technology compatibility kit
- The Publisher verification
- The Subscriber verification
- JDK 9
- Advanced - async and parallel in Reactive Streams
- Transfiguration of the Reactive Landscape
- RxJava transfiguration
- Vert.x adjustments
- Ratpack improvements
- MongoDB Reactive Streams driver
- A composition of reactive technologies in action
- Summary
- Project Reactor - the Foundation for Reactive Apps
- A brief history of Project Reactor
- Project Reactor version 1.x
- Project Reactor version 2.x
- Project Reactor essentials
- Adding Reactor to the project
- Reactive types – Flux and Mono
- Flux
- Mono
- Reactive types of RxJava 2
- Observable
- Flowable
- Single
- Maybe
- Completable
- Creating Flux and Mono sequences
- Subscribing to Reactive Streams
- Implementing custom subscribers
- Transforming reactive sequences with operators
- Mapping elements of reactive sequences
- Filtering reactive sequences
- Collecting reactive sequences
- Reducing stream elements
- Combining Reactive Streams
- Batching stream elements
- The flatMap concatMap and flatMapSequential operators
- Sampling elements
- Transforming reactive sequences into blocking structures
- Peeking elements while sequence processing
- Materializing and dematerializing signals
- Finding an appropriate operator
- Creating streams programmatically
- Factory methods – push and create
- Factory method – generate
- Wrapping disposable resources into Reactive Streams
- Wrapping reactive transactions with the usingWhen factory
- Handling errors
- Backpressure handling
- Hot and cold streams
- Multicasting elements of a stream
- Caching elements of a stream
- Sharing elements of a stream
- Dealing with time
- Composing and transforming Reactive Streams
- Processors
- Testing and debugging Project Reactor
- Reactor Addons
- Advanced Project Reactor
- Reactive Streams life cycle
- Assembly-time
- Subscription-time
- Runtime
- The thread scheduling model in Reactor
- The publishOn operator
- Parallelization with the publishOn operator
- The subscribeOn operator
- The parallel operator
- Scheduler
- Rector Context
- Internals of Project Reactor
- Macro-fusion
- Micro-fusion
- Summary
- Going Reactive with Spring Boot 2
- A fast start as the key to success
- Using Spring Roo to try to develop applications faster
- Spring Boot as a key to fast-growing applications
- Reactive in Spring Boot 2.0
- Reactive in Spring Core
- Support for reactive types conversion
- Reactive I/O
- Reactive in web
- Reactive in Spring Data
- Reactive in Spring Session
- Reactive in Spring Security
- Reactive in Spring Cloud
- Reactive in Spring Test
- Reactive in monitoring
- Summary
- WebFlux Async Non-Blocking Communication
- WebFlux as a central reactive server foundation
- The reactive web core
- The reactive web and MVC frameworks
- Purely functional web with WebFlux
- Non-blocking cross-service communication with WebClient
- Reactive WebSocket API
- Server-side WebSocket API
- Client-side WebSocket API
- WebFlux WebSocket versus the Spring WebSocket module
- Reactive SSE as a lightweight replacement for WebSockets
- Reactive template engines
- Reactive web security
- Reactive access to SecurityContext
- Enabling reactive security
- Interaction with other reactive libraries
- WebFlux versus Web MVC
- Laws matter when comparing frameworks
- Little's Law
- Amdahl's Law
- The Universal Scalability Law
- Thorough analysis and comparison
- Understanding the processing models in WebFlux and Web MVC
- Impact of processing models on throughput and latency
- Challenges with the WebFlux processing model
- Impact of different processing models on memory consumption
- Impact of processing models on usability
- Application of WebFlux
- Microservice-based systems
- Systems that handle clients with slow connections
- Streaming or real-time systems
- WebFlux in action
- Summary
- Reactive Database Access
- Data handling patterns in the modern world
- Domain-driven design
- Data stores in the era of microservices
- Polyglot persistence
- Database as a Service
- Sharing data across microservices
- Distributed transactions
- Event-driven architecture
- Eventual consistency
- The SAGA pattern
- Event sourcing
- Command Query Responsibility Segregation
- Conflict-free replicated data types
- Messaging system as a data store
- Synchronous model for data retrieval
- Wire protocol for database access
- Database driver
- JDBC
- Connection management
- Making relational database access reactive
- Spring JDBC
- Spring Data JDBC
- Making Spring Data JDBC reactive
- JPA
- Making JPA reactive
- Spring Data JPA
- Making Spring Data JPA reactive
- Spring Data NoSQL
- Limitations of the synchronous model
- Advantages of the synchronous model
- Reactive data access with Spring Data
- Using MongoDB reactive repository
- Combining repository operations
- How reactive repositories work
- Pagination support
- ReactiveMongoRepository implementation details
- Using ReactiveMongoTemplate
- Using reactive drivers (MongoDB)
- Using asynchronous drivers (Cassandra)
- Reactive transactions
- Reactive transactions with MongoDB 4
- Distributed transactions with the SAGA pattern
- Spring Data reactive connectors
- Reactive MongoDB connector
- Reactive Cassandra connector
- Reactive Couchbase connector
- Reactive Redis connector
- Limitations and anticipated improvements
- Asynchronous Database Access
- Reactive Relational Database Connectivity
- Using R2DBC with Spring Data R2DBC
- Transforming a synchronous repository into reactive
- Using the rxjava2-jdbc library
- Wrapping a synchronous CrudRepository
- Reactive Spring Data in action
- Summary
- Scaling Up with Cloud Streams
- Message brokers as the key to message-driven systems
- Server-side load balancing
- Client-side load balancing with Spring Cloud and Ribbon
- Message brokers as an elastic reliable layer for message transferring
- The market of message brokers
- Spring Cloud Streams as a bridge to Spring Ecosystem
- Reactive programming in the cloud
- Spring Cloud Data Flow
- The finest-grained application with Spring Cloud Function
- Spring Cloud – function as a part of a data flow
- RSocket for low-latency reactive message passing
- RSocket versus Reactor-Netty
- RSocket in Java
- RSocket versus gRPC
- RSocket in Spring Framework
- RSocket in other frameworks
- The ScaleCube Project
- The Proteus Project
- Summarizing RSocket
- Summary
- Testing the Reactive Application
- Why are reactive streams hard to test?
- Testing reactive streams with StepVerifier
- Essentials of StepVerifier
- Advanced testing with StepVerifier
- Dealing with virtual time
- Verifying reactive context
- Testing WebFlux
- Testing Controllers with WebTestClient
- Testing WebSocket
- Summary
- And Finally Release It!
- The importance of DevOps-friendly apps
- Monitoring the Reactive Spring application
- Spring Boot Actuator
- Adding an actuator to the project
- Service info endpoint
- Health information endpoint
- Metrics endpoint
- Loggers management endpoint
- Other valuable endpoints
- Writing custom actuator endpoints
- Securing actuator endpoints
- Micrometer
- Default Spring Boot metrics
- Monitoring Reactive Streams
- Monitoring reactor flows
- Monitoring reactor schedulers
- Adding custom Micrometer meters
- Distributed tracing with Spring Boot Sleuth
- Pretty UI with Spring Boot Admin 2.x
- Deploying to the cloud
- Deploying to Amazon Web Services
- Deploying to the Google Kubernetes Engine
- Deploying to Pivotal Cloud Foundry
- Discovering RabbitMQ in PCF
- Discovering MongoDB in PCF
- Configurationless deployment with Spring Cloud Data Flow for PCF
- Knative for FaaS over Kubernetes and Istio
- Bits of advice for successful application deployment
- Summary
- Other Books You May Enjoy
- Leave a review - let other readers know what you think 更新時間:2021-07-23 16:37:22