Ich verwende Spring-Cloud-Stream als Wrapper für RabbitMQ.So testen Sie MANUAL ACK im Spring Stream - RabbitMQ
In meinem Projekt muss ich MANUAL ACK verwenden. Also habe ich passende Konfiguration/Code hinzugefügt und es funktioniert wenn ich die Anwendung einschalte. Nachrichten werden übergeben und ACK wird vom Konsumenten zurück gesendet.
@StreamListener(target = Sink.INPUT)
public void foo(@Payload String message,
@Header(AmqpHeaders.CHANNEL) Channel channel,
@Header(AmqpHeaders.DELIVERY_TAG) Long deliveryTag) throws IOException {
service.bar(message);
channel.basicAck(deliveryTag, false);
}
Frage ist:
Ich kann den Test für AUTO ACK schreiben, aber, wie es für MANUAL ACK zu schreiben? Ich weiß einfach nicht, wie man@Header(AmqpHeaders.CHANNEL) Channel channel
in meinem Test übergibt?
Der Komponententest ist nicht mein Fall. Ich möchte Integrationstest haben, die auch überprüfen, ob die Konfiguration meiner Warteschlangen korrekt ist. Also muss ich Senden Sie die Nachricht über den Kanal stattdessen direkt Aufruf der Behandlungsmethode –
In diesem Fall ist es nicht klar, was t fragen Sie in Ihrer Zusatzfrage in Ihrer Antwort "Aber vielleicht weiß jemand, ob es einen möglichen Ansatz gibt, ohne den Kanal in Kopfzeilen zu verspotten?". Was Sie tun, ist richtig. –
war nur neugierig, wenn es tun kann, ohne den Kanal zu verspotten, so wie RabbitMq den echten Kanal senden kann. –