Ho questo caso d'uso.Integrazione molla: difficoltà con la transazione tra 2 attivatori
prima catena:
<int:chain input-channel="inserimentoCanaleActivate" output-channel="inserimentoCanalePreRouting">
<int:service-activator ref="inserimentoCanaleActivator" method="activate" />
</int:chain>
Questo è il codice relativo:
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public EventMessage<ModificaOperativitaRapporto> activate(EventMessage<InserimentoCanale> eventMessage) {
...
// some Database changes
dao.save(myObject);
}
Tutto sta lavorando molto.
Poi ho un'altra catena:
<int:chain id="onlineCensimentoClienteChain" input-channel="ONLINE_CENSIMENTO_CLIENTE" output-channel="inserimentoCanaleActivate">
<int:service-activator ref="onlineCensimentoClienteActivator" method="activate" />
<int:splitter expression="payload.getPayload().getCanali()" />
</int:chain>
E il relativo attivatore:
@Override
public EventMessage<CensimentoCliente> activate(EventMessage<CensimentoCliente> eventMessage) {
...
// some Database changes
dao.save(myObject);
}
Il CensimentoCliente
payload come descritto qui di seguito un List
di payload della prima catena, quindi con uno splitter I diviso sulla lista e riutilizzare il codice della prima catena.
public interface CensimentoCliente extends Serializable {
Collection<? extends InserimentoCanale> getCanali();
void setCanali(Collection<? extends InserimentoCanale> canali);
...
}
Ma dato che ogni attivatore ottiene la sua definizione di transazione (dal momento che il primo può vivere senza il secondo) Ho un caso d'uso in cui vengono separate le transazioni.
L'obiettivo è far sì che le modifiche del db delle due catene siano state parte della stessa transazione.
Qualsiasi aiuto?
Cordiali saluti Massimo
Hai mai trovato una soluzione? – dMcNavish
No ........... –