Je souhaite configurer une application d'intégration Spring de manière à ce que si je place un certain nombre de tâches, chacune représentée par un message, sur un canal, l'un des points d'extrémité choisira la tâche suivante et la traitera. Cela impliquerait un service d'exécution de pool de threads, je suppose.
Réponse
Trop de publicités?Oui, utilisez un distributeur + un exécuteur de tâches avec le canal (aka Canal d'exécution ). De cette manière, tout point d'extrémité (par ex. service-activator
) consommant le canal sera invoqué de manière asynchrone en utilisant le pool de threads du répartiteur.
Dans l'exemple suivant, tous les messages atterrissant sur le canal channel01
sera consommé par le jobLauncher
au sein de l'un des services de l taskExecutor
fils.
<int:channel id="channel01">
<int:dispatcher task-executor="taskExecutor">
</int:channel>
<task:executor id="taskExecutor" pool-size="2"/>
<int:service-activator input-channel="channel01" ref="jobLauncher">