Spring ermöglicht das Abfangen von Nachrichten für viele ihrer Produkte, wie RestTemplate und SpringMVC. Ist es möglich, Spring Cloud Stream-Nachrichten abzufangen? Für eingehende und ausgehende Nachrichten.Abfangen von Spring Cloud Stream-Nachrichten?
Antwort
Nicht sicher, was Sie hier durch Abfangen meinen - beide Beispiele, die Sie geben, sind nicht nachrichtenbasiert :).
Aber Sie möchten Zugriff auf die vollständige Nachricht erhalten, können Sie das als Argument für eine @StreamListener
oder @ServiceActivator
-annotated-Methode verwenden. Mit Spring Cloud Stream können Sie außerdem eine vollständige Spring Integration-Pipeline einrichten, sodass Sie Ratschläge und alles, was Sie benötigen, hinzufügen können - siehe hier: https://github.com/spring-projects/spring-integration-java-dsl/wiki/Spring-Integration-Java-DSL-Reference.
Ich würde Sie ermutigen, einen Blick auf die Spring Integration Referenz sowie http://docs.spring.io/autorepo/docs/spring-integration/4.2.6.RELEASE/reference/html/ zu werfen. Der Spring Cloud Stream injiziert die Kanäle automatisch und von dort aus haben Sie volle Freiheit bei der Konstruktion Ihrer Pipeline.
hoffte, das hilft, Marius
War in der Lage ein- und ausgehende Frühling Cloud-Stream-Nachrichten, die die GlobalChannelInterceptor
Annotation und ChannelInterceptor
Schnittstelle abzufangen. Siehe Beispiel unten.
import org.springframework.integration.config.GlobalChannelInterceptor;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.stereotype.Component;
@Component
@GlobalChannelInterceptor
public class Interceptor implements ChannelInterceptor {
private final Logger log = LoggerFactory.getLogger(Interceptor.class);
@Override
public Message<?> preSend(Message<?> msg, MessageChannel mc) {
log.info("In preSend");
return msg;
}
@Override
public void postSend(Message<?> msg, MessageChannel mc, boolean bln) {
log.info("In postSend");
}
@Override
public void afterSendCompletion(Message<?> msg, MessageChannel mc, boolean bln, Exception excptn) {
log.info("In afterSendCompletion");
}
@Override
public boolean preReceive(MessageChannel mc) {
log.info("In preReceive");
return true;
}
@Override
public Message<?> postReceive(Message<?> msg, MessageChannel mc) {
log.info("In postReceive");
return msg;
}
@Override
public void afterReceiveCompletion(Message<?> msg, MessageChannel mc, Exception excptn) {
log.info("In afterReceiveCompletion");
}
}
- 1. Probleme spring-cloud-config und spring-cloud-bus
- 2. Spring Cloud - SQS
- 3. Pivotal Cloud Foundry - Spring Cloud-Dienste
- 4. Spring Cloud Microservices Speicherauslastung
- 5. Spring cloud performance tuning
- 6. Spring Cloud Brixton.RELEASE zuul
- 7. Spring Cloud Config-Client ohne Spring Boot
- 8. Spring Cloud & Spring OAuth2 - EnableGlobalMethodSecurity löst AlreadyBuiltException
- 9. Spring-Cloud "Pre" ZUUL Filter
- 10. spring-cloud-stream kafka fehlerbehandlung
- 11. Spring Cloud Config-Server Problem
- 12. spring cloud stream 'bindingService' Fehler
- 13. Spring Cloud Consul/Aktualisierungsendpunkt fehlt
- 14. Spring Cloud Config - Passwort verschlüsseln
- 15. Veröffentlichungsdatum für Spring Cloud Sleuth
- 16. Spring Cloud Config Server - Sicherheitsdetails
- 17. Spring Cloud Stream Kafka-Binderkomprimierung
- 18. Spring Cloud: Ribbon und HTTPS
- 19. Anwendungsstopp-Ereignis für Spring-Boot-Anwendung abfangen
- 20. ZooKeeper mit Cloud-Konfiguration für Spring Cloud-Anwendung
- 21. Spring Cloud-Konfiguration wie Lösung für .NET
- 22. Spring Cloud - bootstrap.properties außerhalb meines Glases
- 23. Spring Cloud Stream 1.0.0-RELEASE und Threads
- 24. Spring Cloud Stream Kafka Rekord zu groß
- 25. spring-cloud-sleuth spur hessian client
- 26. Spring-Boot-Metriken im Vergleich zu Spring-Cloud-Metriken
- 27. Spring-Cloud-Sleuth-Integration mit Feder-amqp
- 28. Spring Cloud Stream mit reaktiven Streams
- 29. Spring Cloud DataFlow und Kafka Security
- 30. Spring Cloud: Feign und HTTP-Verbindung Pooling
Ja, ich habe vor ein paar Stunden angefangen, die Spring Integration zu lesen, und ich denke, die Antwort ist GlobalChannelInterceptor. Interceptor ist ein übliches Entwurfsmuster. es ist im Grunde, wenn Sie eine Anfrage oder Nachricht vor oder nach der Verarbeitung erhalten. –
Ja, in diesem Fall sollte ein '@ GlobalChannelInterceptor' hilfreich sein. –