Ich habe mehrere Möglichkeiten versucht, manuelle ack mit RabbitMQ zu verwalten, insbesondere basierend auf this previous post, aber leider funktioniert keiner von ihnen.Wie man manuell mit Spring Cloud Stream Rabbit zu verwalten?
In meiner Konfigurationsdatei habe ich den Bestätigungs-Modus auf MANUAL wie folgt festgelegt:
spring:
cloud:
stream:
bindings:
magento-consumer:
binder: rabbit
destination: toto
durableSubscription: false
consumer:
acknowledge-mode: MANUAL
Dann habe ich eine receive
Methode, die von @StreamListener
mit Anmerkungen versehen ist, die vier Parameter verwendet:
@StreamListener(SinkInterface.NAME)
public void receive(
Message<Event> m,
@Header(name = Queue.TO_MAGENTO , required = false) Boolean header,
@Header(AmqpHeaders.CHANNEL) Channel channel,
@Header(AmqpHeaders.DELIVERY_TAG) Long deliveryTag
) {
//Do something
}
Das Problem ist, dass der channel
Parameter immer Null ist, so dass ich den Header amqp_channel
nicht abrufen kann.
org.springframework.messaging.MessageHandlingException: Fehlende Header 'amqp_channel' für Parametertyp-Methode [Schnittstelle com.rabbitmq.client.Channel]
Wie kann ich diesen Kanalparameter abrufen? Ich verstehe nicht, warum die amqp_channel
nicht festgelegt ist, und wie man es injiziert.
Habe ich etwas übersehen?
Meine schlechte, ich habe nicht auf das Feld "Kaninchen" geachtet ... –