RabbitMQ – Build Quorum Queue in Cluster

Quorum Queues are a new type for implementing durable and replicated Queues in RabbitMQ. In order to replace mirroring Queue, this new type is built to perform specific use cases where data safety is mandatory in our business solution.

In this article, I want to show you this new type in action in a RabbitMQ cluster built with Docker’s containers and watch how it works by sending and consuming a messages.
Continue reading “RabbitMQ – Build Quorum Queue in Cluster”

Junior Developer and Software Engineer

What’s real meaning behind these titles? It’s a matter of experience, skills or both? Does it depends on the number of language codes known with proficiency? Am I right to suppose that a developer with only one code language can’t be title as Engineer?
Well, I don’t have all these answers, obviously I’ve my opinions which can be very different from others, so I’m not able to give a conclusive definition for these job titles.

Anyway, at least I’m sure to be a developer, and I want to focus my comparation at this point. Giving the same problem, I’d like to show you what I can expect from a Junior Developer and what I may expect from a Software Engineering.
Continue reading “Junior Developer and Software Engineer”

Why Swagger code generator doesn’t fit for me

Rest Api is the most popular interface for exchanging data between platforms and OpenApi specifications make very easier for everyone to publish and consume any Rest Api.
Tools, as Swagger, let generate code for both client and server avoid us all the “boilerplate code” to connect with the services or expose them. Yet, all that glitters is not gold, let’s see why..
Continue reading “Why Swagger code generator doesn’t fit for me”

Sql or NoSql, that’s the question

Although it’s undeniable that most applications developed over the years have SQL as storage solution, it is nowadays common to face the choice, before starting developing a new one, between SQL or NoSQL persistence.
Both solutions have pros and cons and sometimes one is far better than others. Let me give you, through a real case, what’s my point of view in this article.
Continue reading “Sql or NoSql, that’s the question”

Combining cloneable interface with Memento Pattern

Clonable interface and Memento pattern: what do they have in common? At first glance, I’d say nothing, the first is a JDK interface while the last is a programming language pattern, yet, once bind togheter, they could give us a powerful tool to apply in our solution.
Continue reading “Combining cloneable interface with Memento Pattern”

Can Ci/Cd get on with databases?


While it’s easy to apply Ci/Cd to stateless components such an application or job, the things become more complicated when we try applying the same method to statefull infrastructure as database or message broker.
Although changes in statefull components are less frequently than in stateless one, we shouldn’t give up to cover this deployment stage with a pipeline, probably we need a multi steps approach to sort it out.
Continue reading “Can Ci/Cd get on with databases?”

Why is Java moving to Functional Programming ?


Functional Programming (FP) has been introduced in JDK since version 8 with JSR 335 (Lambda Expressions for the Java Programming Language). Frameworks as Spring and others have been changing their implementation in the new releases.
In this article I tried to understand why we should care about this programming approach.

Continue reading “Why is Java moving to Functional Programming ?”

Apache Kafka and Rabbit – Dealing with Stream

Very often I come accross article about Stream processing in Message Broker (Apache Kafka, RabbitMq, …) where it seems that the difference between a traditional and Stream message processing depends on the message numbers producing/consuming rate.
If I’m going to have a large number of messages, I call it Stream processing, otherwise, it’s a traditional way to handle them.
Definitely, message throughput matter, but is that the only point to keep in mind when you’re going to build an event consumer?
Continue reading “Apache Kafka and Rabbit – Dealing with Stream”

RESTFul Api – Response status and operation result

Giving back a meaningful http status code and message to a client when it invokes our RESTFul service is a correct and desirable behaviour expected by our consumers.

It’s not enough including the information result in the return message to complete our task. This information must be wrapped inside a correct response status and a suitable message.

Continue reading “RESTFul Api – Response status and operation result”

Reactive or Asynchronous? Trying Avoid any headache choice

Is it better to use Spring Webflux project, with its Reactive API, or Asyncronous support for calling a method in separates thread?
Performance, resource consumption, how many factors should I consider when I write my code and call an external resource that could block my method execution waiting for an answer?

It’s interesting to see the difference before making any choice.
Continue reading “Reactive or Asynchronous? Trying Avoid any headache choice”