In a previous series that I wrote on building a micro service from the ground up with Quarkus and Kotlin, the service was secured using OpenID Connect. The premise was that the service would be behind an API gateway and would be invoked by another micro service using JWTs issued by an OIDC provider. For component tests we used Keycloak as the provider, which also is a good choice for hosting your own OIDC server. We also demonstrated how Okta could be used as an external OIDC provider for issuing JWTs. In this article we will explore using Amazon Cognito.
This is a part of a series on building a microservice from the ground up with Quarkus and Kotlin. We have built a microservice. We have comprehensive unit and component tests. We can build it locally and produce docker images for both running in a JVM and natively with GrallVM. Now we need a pipeline for an automated build process.
The pipeline will
Jib is a google project for building optimised docker images for JVM applications without the need for a docker daemon or docker build files. The library has maven and gradle plugins for building docker images and pushing them to a docker repository.
If you are a wiz at writing docker scripts and would rather control every aspect of the docker build you might be tempted to skip Jib. However, it does provide a useful starting point and gets your application built and deployed quickly. …
This is the fifth part of a series on building a microservice in Quarkus. The other parts were:
In this part we are going to deploy the service running in GraalVM.
GraalVM is a game-changing technology that has only been production ready since 2019. It is a Java VM that contains a JIT compiler and supports building of native images allowing AOT (Ahead Of…
One of the most common use cases for messaging applications is to retrieve files from a directory and process the results.
Spring Integration has great support for this and the DSL makes it very easy to set up.
We will write a spring boot application that will:
This is the fourth part in a series on building a microservice from the ground up with Quarkus, Kotlin and Debezium. The service is for sending SMS messages.
In Part One we built the basic framework and added persistence. In the second part we used CDC to generate events from the persisted SMS Messages. We built a message handler to process the messages that were sent to the Kafka topic. In part three we added a couple of SMS providers and a router that sent the messages to the third party provider based on a simple random algorithm. …
This is the third part in a series on building a microservice from the ground up with Quarkus, Kotlin and Debezium. The service is for sending SMS messages.
In Part One we built the basic framework and added persistence. In the second part we used CDC to generate events from the persisted SMS Messages. We built a message handler to process the messages that were sent to the Kafka topic.
Here is the current state of the message handler
At the end of part two the message handler just updates the message status to Delivered (line 11) so we…
This is the second instalment in a series on building a microservice from the ground up with Quarkus, Kotlin and Debezium.
In part one we built a simple REST API in Quarkus for persisting SMS messages. We used testcontainers to run the service in a docker container and establish that everything worked as expected.
In this part we’ll use the transactional outbox pattern to generate events when the messages are persisted. We can then process the messages asynchronously and, ultimately, get the SMS message to the end user’s mobile device.
A common pattern in microservices is to generate events when…
This is a multi-part series on creating a microservice from scratch. It will be a production-quality application that will highlight the use of the following technologies:
The application will be be constructed in stages, with each stage adding additional functionality. Each release will be deployable and fully tested, but the service won’t be ready for production until the final stage.