Ich benutze Feder Cloud-Stream, und vor ein Problem, wenn ich InboundChannelAdapter mit Rückgabetyp MessageSource, dann verhält sich wie eine Singleton-Klasse, es läuft alle 1 Sekunde und Senden der gleichen Daten an den Verbraucher. Außerdem druckt der Logger sie nur einmal beim Start der Anwendung aus.Spring Datenstrom InboundChannelAdapter haben unterschiedliches Verhalten mit unterschiedlichen Rückgabetyp
@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();
}
aber wo ich geändert haben einfach zu String zu Message geben Sie dann seine adaequat
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();
}
es Verbraucher, um aktualisierte Daten zu senden und Drucken auch das Update-Log-in jeder Sekunde.
Also meine Frage ist, warum unterschiedliches Verhalten für verschiedene Rückgabetypen?
Hallo Gray, Vielen Dank für Ihre Antwort, ich habe auf Message hinzugefügt @Bean, aber es immer noch die eine einzelne Kopie (als Singleton) von UuidCaller in jeder 1 Sekunde senden, nicht gedruckt alles (log). Kannst du bitte schreiben, wie ich die UUID in den Lambda (zB Code) verschieben kann. Vielen Dank! – Baba
Danke, mein Herr. Ich bin ein großer Fan des Frühlingsteams. Danke für Ihre wertvolle Antwort. – Baba