Ich speichere lokale Thread-Nachrichtendaten in einem MDC. Ich möchte das alte löschen und neue Kontextdaten für eine eingehende Kaninchen-Nachricht hinzufügen, wie das Lesen bestimmter Werte aus den Headern oder das Lesen der Nutzdaten der Kaninchen-Nachricht als byte[]
. Leider sehe ich oft Ausnahmen, bevor die Nachricht meine mit @RabbitHandler
annotierten Methoden trifft. Gibt es einen früheren Einstiegspunkt, an den ich mich anschließen kann, um diesen Kontext zu etablieren? Ich weiß nicht, was vor der Deserialisierung passiert, aber im Idealfall möchte ich auf die Nachricht zugreifen, bevor ich versuche, sie zu deserialisieren. Vielleicht gibt es irgendwo eine onMessageReceived(byte[] message, Map headers)
Methode. Je früher im Call Stack, desto besser.
Das @RabbitHandler
wird von AbstractRabbitListenerContainerFactory
aufgefüllt, das mit dem benutzerdefinierten MessageConverter
geliefert werden kann: Ссылка . Sein fromMessage()
wird von MessagingMessageListenerAdapter.toMessagingMessage()
aufgerufen. Und das ist in MessagingMessageListenerAdapter.onMessage()
gemacht. Das ist in der Tat sehr früh Platz, den Sie haken können. Und Sie haben wirklich noch ein rohe org.springframework.amqp.core.Message
-Objekt ohne Konvertierung und mit allen verfügbaren Kopfzeilen und Eigenschaften.
Nun, Sie können auch injizieren:
%Vor%Aus ähnlichen Gründen bitten Sie.
Tags und Links java spring rabbitmq spring-amqp spring-rabbit