Short Retry vs Long Retry in Apache Camel

Camel Design Patterns book contains 20 patterns and numerous techniques and best practices for designing Apache Camel based integration solutions. Using this link only, JCG readers can buy Camel Design Patterns book with over 40% discount until end of June!         To get a feel of the book, below is a shorter version of the Retry Pattern ...

Read More »

Event Logs

Most system have some sort of event logs – i.e. what has happened in the system and who did it. And sometimes it has a dual existence – once as an “audit log”, and once as event log, which is used to replay what has happened. These are actually two separate concepts: the audit log is the trace that every ...

Read More »

Testing Spring Data + Spring Boot applications with Arquillian (Part 2)

In previous post, I wrote about how to test Spring Data application using Docker with Arquillian Cube. The test looked like: @RunWith(SpringRunner.class) @SpringBootTest(classes = PingPongController.class, webEnvironment = RANDOM_PORT) @ContextConfiguration(initializers = PingPongSpringBootTest.Initializer.class) public class PingPongSpringBootTest { @ClassRule public static ContainerDslRule redis = new ContainerDslRule("redis:3.2.6") .withPortBinding(6379); @Autowired TestRestTemplate restTemplate; @Test public void should_get_pongs() { // given restTemplate.postForObject("/ping", "pong", String.class); restTemplate.postForObject("/ping", "pung", String.class); // when final List<String> ...

Read More »

Clean Code from the trenches

spring-interview-questions-answers

Clean Code from the trenches – Validation Let’s directly start with an example. Consider a simple web service which allows clients to place order to a shop. A very simplified version of the order controller could look something like below – @RestController @RequestMapping(value = "/", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public class OrderController { private final OrderService orderService; public ...

Read More »

Apache Camel 2.19 Released – Whats new

Apache Camel 2.19 was released on May 5th 2017 and its about time I do a little blog about what this release includes of noteworthy new features and improvements. Here is a list of the noteworthy new features and improvements. 1. Spring Boot Improvements The Camel 2.19 release has been improved for Spring Boot in numerous ways. For example all ...

Read More »

The difference between a compiler and an interpreter

According to their definitions, the difference between a compiler and an interpreter seems clear enough: interpreter a program that directly executes instructions written in a programming language compiler a program that transforms source code in a low(er)-level language If you dig deeper, though, you might find some blurring between the two. In fact an interpreter could translate the source language in a ...

Read More »

Yet another Jigsaw opinion piece

In the past weeks there has been a heated debate around the imminent release of Java 9 and its most famous feature: the Java platform module system – the JPMS – which is better known under its project umbrella‘s name Jigsaw. The module system is introduced into the Java ecosystem in form of a formal specification process – a JSR ...

Read More »

How Does Inversion of Control Really Work

IoC seems to have become the cornerstone concept of many frameworks and object-oriented designs since it was described by Martin Fowler, Robert Martin and others ten years ago. Despite its popularity IoC is misunderstood and overcomplicated all too often.                 Look at this code: print(book.title()); It is very straight forward: we retrieve the ...

Read More »