J'utilise un flux de printemps avec un problème lorsque j'utilise InboundChannelAdapter avec le type de retour MessageSource, puis se comporte comme une classe singleton, il s'exécute toutes les 1 seconde et envoyer les mêmes données au consommateur. En outre, l'enregistreur les affiche une seule fois au démarrage de l'application.Flux de données de printemps InboundChannelAdapter a un comportement différent avec un type de retour différent
@InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "1000", maxMessagesPerPoll = "1"))
public MessageSource<String> uuidSource() {
UuidCaller uuidCaller = new UuidCaller(atomicLong.addAndGet(1), new Date(), UUID.randomUUID().toString());
logger.info("buid request:"+uuidCaller);
return() -> MessageBuilder.withPayload(uuidCaller.toString()).build();
}
mais où j'ai changé à MessageSource à simple type de chaîne alors son travail bien
InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "1000", maxMessagesPerPoll = "1"))
public String uuidSource() {
UuidCaller uuidCaller = new UuidCaller(atomicLong.addAndGet(1), new Date(), UUID.randomUUID().toString());
logger.info("build request:"+uuidCaller);
return uuidCaller.toString();
}
il est consommateur d'envoyer des données mises à jour et également l'impression du journal de mise à jour chaque seconde.
Donc, ma question est de savoir pourquoi le comportement différent pour le type de retour différent?
Bonjour Gray, Merci pour votre réponse, j'ai ajouté @Bean sur MessageSource, mais encore l'envoi d'un seul exemplaire (comme singleton) de UuidCaller dans toutes les 1 sec, pas d'impression quoi que ce soit (journal). Pouvez-vous s'il vous plaît écrire la façon dont je peux déplacer l'UUID dans le lambda (par exemple le code). Merci! – Baba
Merci monsieur. Je suis un grand fan de l'équipe de printemps. Merci pour votre réponse précieuse. – Baba