Reactive programming is about messages, futures, events, channels and streams

In this blog post I want to point out the topic of the open sourced Reactive Cloud Native Starter example with Java backend Microservices and a Vue.js frontend web application. The gif below shows the example application. The application simply displays Articles and Authors information on a web page. You also see the creation of Articles with cURL commands in a terminal session and the UI is updated automatically.
(the gif is from the Cloud Native Starter project)

reactive demo
That example was mainly developed by Niklas Heidloff. He wrote a lot of very useful blog posts like Development of Reactive Applications with Quarkus related to that topic.

In this blog post I show, what could be useful to know, when you start with this Cloud Native Starter example for reactive programming to create and consume reactive RESTful APIs in an asynchronous way. I will also give a brief overview of the steps to create an article in the example application.

Continue reading

Getting started to secure a simple Java Microservice with Keycloak, MicroProfile and OpenLiberty

Invoke reactive Endpoints with Quarkus and MicroProfile

In this blog post I want to point out that I just created a 15 min YouTube video related to the great Hands-on workshop: Reactive Endpoints with Quarkus on OpenShift. In this video you can watch and follow the steps of the exercise 3 “Invoke Endpoints reactively”. Niklas wrote a great blog post about the topic of that exercise. This is the name and link of his blog post Invoking REST APIs asynchronously with Quarkus.

Continue reading

How to setup the reactive Cloud Native Starter sample application on OpenShift in IBM Cloud

In this blog post I want to point out that I just created a 5 min YouTube video related to the great Hands-on workshop: Reactive Endpoints with Quarkus on OpenShift. In that short video I show the setup of the example application to show reactive programming.

The image below shows the major architecture of the reactive programming example. There are three Java Microservices, one Vue.js UI application and two infrastructure components running on OpenShift (Kubernetes).

reactive-architecture

 


I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

PS:  You can try out Cloud Foundry Apps or Kubernetes on IBM Cloud. By the way, you can use the IBM Cloud for free, if you simply create an IBM Lite account. Here you only need an e-mail address.

#IBMDeveloper, #IBMCloud, #OpenShift, #Kafka, #Postgres, #MicroProfile, #Java #reactive

 

 

Write and execute a JUnit test for a Java microservice based on MicroProfile and run both in the OpenLiberty development mode

This blog post has the focus on: how to develop a JUnit test for the Authors microservice from the Cloud Native Starter example and run both the Authors microservice and the JUnit test on OpenLiberty in the development mode.

That blog post hasn’t the objective to be a blueprint or a ‘how to guide’ for writing JUnit tests,  JUnit test organization, test strategy and so on. The objective is to get technically started along one concrete microservice example from the Cloud Native Starter project. Here is the GitHub project with the source code for this blog post.

The Authors microservice has one RESTful api endpoint called getAuthor. The endpoint provides one parameter for the Author name. The endpoint returns Author data in a JSON format.

Keep the end in mind: The gif shows a sample JUnit test execution for the Author microservice using OpenLiberty in the Visual Studio Code editor:

junit-on-openliberty-run-test

Note: As an alternative or in addition, you can also visit the OpenLiberty tutorial “MicroProfile or Jakarta EE application” to start with that topic.

Let’s start with: What do we need and how do we realize the implementation?

We need to ..

    •  invoke the REST endpoint of the Authors microservice with a REST Client.
    •  transform the JSON response of the REST endpoint to an Author data class
    •  handle different values to invoke the REST Endpoint parameter for the Author name to run tests with variations of the Author name.
    • compare the actual response value with an expected value and document the result.

Continue reading

Deploy the Reactive Cloud Native Starter example to IBM Cloud

The Cloud Native Starter project now contains the new great topic, the development of Reactive Microservices  with Java, quarkus, MicroProfile and Vue.js as front-end. The Reactive example implementation runs on minikube, local OpenShift and on IBM Cloud Kubernetes. Here are the instructions on GitHub.

But what does reactive mean? Here is an extract of the definition in  The Reactive Manifesto.

“Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.” 

But be aware, our example is not a full Reactive System it shows reactive programming techniques.

Note: To understand the difference between these two topics, that badge on cognitiveclass is useful Reactive Architecture: Introduction to Reactive Systems.

In our reactive programming example, you see directly changes in the database on the Web UI, without refreshing the browser.

reactive-sample

In this blog post I want to share, how you deploy that awesome Reactive example to a free IBM Cloud Kubernetes Cluster and using the free quota of the IBM Cloud Container Registry. We avoid for the setup that you have to use any paid IBM Cloud services, because you want just to see how the Reactive example works on IBM Cloud.
To create a free Cluster you need a feature code to create a Trial Account or you create a pay as you go account and you only use the free services of IBM Cloud.

That is the major architecture of the Reactive example. Three Java Microservices, one Vue UI application and two infrastructure components running on Kubernetes.

reactive-architecture

But what is reactive programming in more detail? If you want to get more details of the Reactive topic, just visit the blog post Development of Reactive Applications with Quarkus from Niklas Heidloff and if you want to explore the setup for local OpenShift take a look into the blog post Cloud Native Starter on Red Hat OpenShift 4 from Harald Uebele.

Continue reading

Be aware of “opentracinqZipkin”, when you update to “MicroProfile 3.0” using “OpenTracing” with “OpenLiberty”

Today, just a very short note. You should be aware of opentracinqZipkin when you use  MicroProfile OpenTracing with OpenLiberty, because I noticed with the update to MicroProfile 3.0 I had a problem with usr:opentracinqZipkin-0.31. I created an issue on OpenLiberty

“MicroProfile 2.1 includes mpOpenTracing-1.2. MicroProfile 3.0 includes mpOpenTracing-1.3. Please make sure you are using the Zipkin sample built for mpOpenTracing-1.3. It can be downloaded at https://github.com/WASdev/sample.opentracing.zipkintracer/releases/tag/1.3

I got that solution from Felix Wong.

But inside the server.xml will not reflect the version change, it will remaining the same feature name usr:opentracingZipkin-0.31.

<server description=”OpenLiberty Server”>
  <featureManager>
      <feature>microProfile-3.0</feature>
     <feature>webProfile-8.0</feature>
     <feature>usr:opentracingZipkin-0.31</feature>
</featureManager>
<httpEndpointid=”defaultHttpEndpoint”host=”*”httpPort=”8080″httpsPort=”9443″/>
….
</server>

I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

PS: You can try out Cloud Foundry Apps or Kubernetes on IBM Cloud. By the way, you can use the IBM Cloud for free, if you simply create an IBM Lite account. Here you only need an e-mail address.

#ibmdeveloper, #MicroProfile, #Java, #OpenTracing

A small source code update, when you use MicroProfile Health

I just want to highlight a small change for the MicroProfile Health, because I noticed with the update to MicroProfile 3.0 that the annotation @Health is deprecated.

mp-health-dep-2.1

It took me a little bit, because it was still listed in the MicroProfile documentation .

mp-health-dep-2.1-01.jpg

But I figured out in the blog post from Philip Riecks , when you replace the annotation @Health with @Readiness and import org.eclipse.microprofile.health.Readiness that it will work:

mp-health-dep-21.-02

I hope this was useful for you and let’s see what’s next?

Greetings,

Thomas

PS: You can try out Cloud Foundry Apps or Kubernetes on IBM Cloud. By the way, you can use the IBM Cloud for free, if you simply create an IBM Lite account. Here you only need an e-mail address.

#ibmdeveloper, #MicroProfile, #Java, #Health, #Readiness

Create one Java Microservice with OpenLiberty and MicroProfile – made for beginners

Today I created a YouTube video, where I developed one Microservice. The level of content of that video is for beginners. The video was “live” recorded and I made some minimal editing and the video takes 18 min.
The recoding is related to Java Microservices with MicroProfile and OpenLiberty in Visual Studio Code . The source code is available in the open sourced Cloud Native Starter GitHub project.

Check it out:

Maybe you are interested, how did I setup the IDE and the Project? … here are the basics.

Continue reading

Fast setup of a Java microservice project with MicroProfileStarter

In this blog post I want to show the easy setup of an own MicroProfile/OpenLiberty project with MicroProfileStarter . From my perspective that is  very useful for new Java developers, who want to build microservices. The prerequisite is, you have installed maven and Java on your local machine.

You can use for more information the MicroProfileStarter it self and the OpenLiberty getting started documentation.

That’s fits perfect to the topic Cloud-Native. Maybe you already know, we (Niklas, Harald and I) working on the open sourced Cloud Native Starter project. That project contains sample code that demonstrates, how to get started with Cloud-Native applications and microservices based architectures. Here we use also MicroProfile/OpenLiberty.

We created a new 60 -90 min hands-on workshop with the focus on Java microservice development with MicroProfile/OpenLiberty and the deployment to Kubernetes on IBM Cloud. This workshop is perfect to get a basic understanding of the Cloud-Native and Java development topics and the combination with MicroProfileStarter is awesome for newer Java Developers.

Continue reading