When developing microservice, it is desirable to use a non-blocking approach to build some services that have large traffic. This enables them to be elastic, that is, scalable, responsive and resilient, meaning that they will be tolerant of failures. Elasticity and resilience together will enable a reactive system to be responsive; they will be able to respond in a timely fashion.

In this excerpt, I will show you how to integrate Redis reactively (non-blocking) with a reactive Spring user-service that runs asynchronously.

This is not a tutorial to Project Reactor/Spring Webflux or how to develop non-blocking APIs or Redis service…

Short Intro …

The Certified Kubernetes Application Developer (CKAD) program has been developed by the Cloud Native Computing Foundation (CNCF), in collaboration with The Linux Foundation, to help expand the Kubernetes ecosystem through standardized training and certification.

The exam is proctored online. It is a performance-based test which consists of a set of performance-based items (19 problems) to be solved in a command line within two (2) hours.

The cost is $US 300 and includes one free retake. This exam curriculum includes these general domains and their weights on the exam are:

  • 13%Core Concepts (pods, resources, quotas, kubectl — run, get…

Local variables are the most essential tool in Java. They let methods to compute significant results by reasonably storing provisional values. Unlike a field or instance variable, a local variable is declared, initialized, and used in the same block it was declared. The name and initializer of a local variable are often more significant to the developers than its type. Usually, the name and initializer bring just as much information as the type. Let’s look at the example below:

Shape s = new Shape();

Looking at the right-hand side of the equal sign only, we will immediately conclude that s

Spring provides several ways of injecting/looking up values from the application configuration properties file. One of them is the @Value annotation discussed in the Spring @Value annotation tricks write up. Another one is the using @ConfigurationProperties annotation on a configuration bean to inject properties values to a bean and use it in the class. Also is the using of Environment object to lookup values, properties or profiles in the classpath.

In this write-up, I will demonstrate how to use @ConfigurationProperties annotation to inject properties values from the application.properties or application.yaml files.

Let go to https://start.spring.io/

Spring framework provides@Value annotation in the org.springframework.beans.factory.annotationpackage. This annotation is used at various level in our application either at field level for expression-driven dependency injection in which a value can be injected into a variable in a class or at the parameter level of a method or a constructor that indicates a default value expression for the main argument. It is also used for dynamic resolution of handler method parameters like in Spring MVC.

@Value annotation can be used within classes annotated with @Configuration, @Component and other stereotype annotations like @Controller, @Service etc. …

Breaking down a complex single application to microservices.

As an application developer or software designer, what we want is to develop or build software that’s responsive to changes. There is much pressure in terms of request from various sources and these can be external or internal forces not limited to market demands, growth, new requirements, bugs, defects, new clients and so on. Idyllically, we can respond to these loads at a balanced rate and with assurance. To be able to build such a resilient platform, the development approach should change to the techniques that are fault-tolerant, dynamically scalable and can stand or resist the friction and pressures.


Habeeb Okunade

Innovative software development professional. Loves sharing knowledge and learning latest stacks. Expertise in microservices architecture using spring boot.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store