Ich implementiere eine Listener-Klasse, die auf einige Ereignisse wartet und sie dann verarbeitet. Wenn die Verarbeitung dieses Ereignisses gut verläuft, wird dieses Ereignis nie erneut gemeldet, aber im Falle einer Ausnahme wird das Ereignis nach einiger Zeit erneut an die MyBeanImplementation-Klasse gemeldet, und es kann erneut versuchen, es zu verarbeiten.Mehrere Instanzen einer Bean
Der folgende Code funktioniert gut, aber da diese Ereignisverarbeitung einige Zeit dauern kann,
1. Ich möchte mehrere Listener haben.
2. Begrenzen Sie die Anzahl der Anrufe an den Dienst, möglicherweise mit Threadpool.
Wie kann ich mehrere Listener haben, die jedes Ereignis unterschiedlich verarbeiten? Ich bin neu bei Spring und habe keine Ahnung, ob das überhaupt möglich ist oder nicht.
Heres ein Beispiel:
// Frühling Konfiguration:
<bean id="MyBean" class="MyBeanImplementation">
// Beispiel Klasse
public class MyBeanImplementation implements EventListener {
@override
public processEvent(Event event) throws EventProcessFailureException {
try {
// Validate event
validateEvent(event);
// Call another service to store part of information from this event
// This service takes some time to return success
boolean success = makeCallToServiceAndStoreInfo(event);
if(!success) {
throw new EventProcessFailureException("Error storing event information!");
}
} catch (Exception e) {
throw new EventProcessFailureException(e);
}
}
}
Dank
Danke nobeh. Ihr erster Ansatz wird in meinem Fall nicht funktionieren, da eine andere Event-Listener-Implementierung nicht notwendig ist. Aber der zweite Ansatz, Spring-Aufgaben zu verwenden, scheint in meinem Anwendungsfall gut zu sein. Ich werde Task Executor versuchen und sehen, ob das für mich funktioniert. – AndyT