14/01/14 - 06 - YBL14 - Pimp my Inter Thread Communication aka Inter-Thread Messaging Architecture
Channel: Paris JUG
Date: 2014-01-17

Pour faire transiter des messages entre threads on utilise le plus souvent une queue comme medium de transport.
C'est par compliqué à mettre en œuvre, et l'api est assez simple.
En revanche si on veut passer du HelloWorld avec 1 thread qui produit; une Queue comme medium ; un/plusieurs thread qui consomme, à une archi plus complexe par exemple:
1/ Un producteur avec plusieurs consommateur qui consomment en parallèle le même message.

2/ Un producteur avec plusieurs consommateur qui consomment en parallèle des messages différents

3/ Une architecture Diamond 
Producer vers consumer-1 parallèle à consumer-2 vers consumer 3

La tache se complique, sans oublié la gestion du locking.

Une solution qui allie simplicité, élégance mais aussi haute performance et open source est proposée par LMAX : Plateforme de trading, qui se prénomme Disruptor.

Durant cette présentation, nous allons voir le cœur du Disruptor : RingBuffer aka CircularBuffer et aussi comment implémenter ces différents cas d'utilisation vu au dessus.

Voici le pitch de LMAX sur disruptor http://www.lmax.com/disruptor

LMAX Disruptor is a software pattern and software component for high performance inter-thread communication that avoids the need for message queues or resource locking.

LMAX Exchange has open-sourced the Java implementation of the Disruptor component and a number of other libraries.

Par Hichame El Khalfi