Inhaltsverzeichnis
So stellen Sie sicher, dass Nachrichten nicht verloren gehen
Was ist die Zuverlässigkeit der Nachrichtenübermittlung?
Heim Java javaLernprogramm Wie SpringBoot RabbitMQ integriert, um eine Verzögerungswarteschlange zu implementieren

Wie SpringBoot RabbitMQ integriert, um eine Verzögerungswarteschlange zu implementieren

May 16, 2023 pm 08:31 PM
springboot rabbitmq

    So stellen Sie sicher, dass Nachrichten nicht verloren gehen

    rabbitmq-Nachrichtenübermittlungspfad

    Produzent->Switch->Warteschlange->Verbraucher

    Im Allgemeinen ist es in drei Phasen unterteilt.

    • 1. Der Produzent stellt die Zuverlässigkeit der Nachrichtenübermittlung sicher.

    • 2.mq interne Nachrichten gehen nicht verloren.

    • 3. Der Verbraucherkonsum ist erfolgreich.

    Was ist die Zuverlässigkeit der Nachrichtenübermittlung?

    Einfach ausgedrückt: Die Nachricht wird zu 100 % an die Nachrichtenwarteschlange gesendet.

    Wir können den Bestätigungsrückruf aktivieren

    Nachdem der Produzent die Nachricht übermittelt hat, gibt mq dem Produzenten eine Bestätigung. Basierend auf der Bestätigung kann der Produzent bestätigen, ob die Nachricht an mq gesendet wurde.

    Aktivieren Sie den Bestätigungsrückruf.

    Ändern Sie die Konfigurationsdatei

    #NONE:禁用发布确认模式,是默认值,CORRELATED:发布消息成功到交换器后会触发回调方法
    spring:
      rabbitmq:
        publisher-confirm-type: correlated
    Nach dem Login kopieren

    Der Testcode

    @Test  
    public void testConfirmCallback() throws InterruptedException {  
        rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback() {  
        /**  
        *  
        * @param correlationData 配置  
        * @param ack 交换机是否收到消息,true是成功,false是失败  
        * @param cause 失败的原因  
        */  
        @Override  
        public void confirm(CorrelationData correlationData, boolean ack, String cause) {  
            System.out.println("confirm=====>");  
            System.out.println("confirm==== ack="+ack);  
            System.out.println("confirm==== cause="+cause);  
            //根据ACK状态做对应的消息更新操作 TODO  
        }  
        });  
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"ikun.mei", "鸡你太美");  
        Thread.sleep(10000);  
    }
    Nach dem Login kopieren

    stellt sicher, dass die Nachricht über returnCallback erfolgreich von der Vermittlungsstelle an die Warteschlange gesendet wird. Ändern Sie die Konfigurationsdatei

    spring:
      rabbitmq:
        #开启returnCallback
        publisher-returns: true
        #交换机处理消息到路由失败,则会返回给生产者
        template:
          mandatory: true
    Nach dem Login kopieren

    Testcode

    @Test  
    void testReturnCallback() {  
        //为true,则交换机处理消息到路由失败,则会返回给生产者 配置文件指定,则这里不需指定  
        rabbitTemplate.setMandatory(true);  
        //开启强制消息投递(mandatory为设置为true),但消息未被路由至任何一个queue,则回退一条消息  
        rabbitTemplate.setReturnsCallback(returned -> {  
            int code = returned.getReplyCode();  
            System.out.println("code="+code);  
            System.out.println("returned="+ returned);  
        });  
        rabbitTemplate.convertAndSend(RabbitMQConfig.EXCHANGE_NAME,"123456","测试returnCallback");  
    }
    Nach dem Login kopieren

    Wenn Verbraucher Nachrichten konsumieren, müssen sie manuell durch Bestätigung bestätigen, dass die Nachrichten konsumiert wurden.

    Ändern Sie die Konfigurationsdatei.

    spring:
      rabbitmq:
        listener:  
          simple:  
            acknowledge-mode: manual
    Nach dem Login kopieren
    .

    Schreiben Sie den Testcode

    Was ist eine Warteschlange für unzustellbare Nachrichten? nack)

    und wird nicht erneut in die Warteschlange gestellt

    requeue=false

    Die Nachricht wurde nicht in der Warteschlange verbraucht und hat die Ablaufzeit der Warteschlange oder der Nachricht selbst überschritten

    TTL (Time-to-Live)

    • Die Nachrichtenlänge der Warteschlange hat das Limit erreichtDas Ergebnis: Die Nachricht wird zu einem unzustellbaren Brief. Wenn die Warteschlange schließlich an einen Schalter für unzustellbare Nachrichten gebunden ist, wird die Nachricht in die Warteschlange für unzustellbare Nachrichten umgeleitet durch den Dead-Letter-Schalter

    • Die Dead-Letter-Warteschlange wird häufig für den verzögerten Warteschlangenverbrauch verwendet. Verzögerte Warteschlange

    • Der Produzent erwartet nicht, dass diese Nachricht sofort verbraucht wird, wenn sie an mq übermittelt wird, sondern wartet eine gewisse Zeit, bevor er sie verbraucht.
    • Springboot integriert Rabbitmq, um das automatische Schließen von Bestellungen bei Zeitüberschreitung zu realisieren. 04 - 16 15:14:44

      msgTag=1
    • message=(Body:'Testauftragsverzögerung' MessageProperties [headers={spring_listener_return_correlation=03169cfc-5061-41fe-be47-c98e36d17eac, x-first-death-exchange=order_exchange, x - Death=[{reason=expired, count=1, Exchange=order_exchange, time=Mo, 16. Apr. 15:14:44 CST 2023, Routing-Keys=[order], queue=order_queue}], x-first-death- Grund = abgelaufen, x-first-death-queue = order_queue}, contentType = text/plain, contentEncoding = UTF-8, contentLength = 0,empfangenDeliveryMode=PERSISTENT, Priorität=0, redelivered=false,empfangenExchange=order_dead_letter_exchange,empfangenRoutingKey=order_dead_letter_queue_routing_key , DeliveryTag=1, ConsumerTag=amq.ctag-Eh8GMgrsrAH1rvtGj7ykOQ, ConsumerQueue=order_dead_letter_queue])
    • body=Bestellverzögerung testen

    Das obige ist der detaillierte Inhalt vonWie SpringBoot RabbitMQ integriert, um eine Verzögerungswarteschlange zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
    Will R.E.P.O. Crossplay haben?
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ Sep 28, 2023 pm 08:24 PM

    So erstellen Sie eine zuverlässige Messaging-Anwendung mit React und RabbitMQ Einführung: Moderne Anwendungen müssen zuverlässiges Messaging unterstützen, um Funktionen wie Echtzeitaktualisierungen und Datensynchronisierung zu erreichen. React ist eine beliebte JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen, während RabbitMQ eine zuverlässige Messaging-Middleware ist. In diesem Artikel wird erläutert, wie Sie React und RabbitMQ kombinieren, um eine zuverlässige Messaging-Anwendung zu erstellen, und es werden spezifische Codebeispiele bereitgestellt. RabbitMQ-Übersicht:

    So verwenden Sie RabbitMQ, um die verteilte Nachrichtenverarbeitung in PHP zu implementieren So verwenden Sie RabbitMQ, um die verteilte Nachrichtenverarbeitung in PHP zu implementieren Jul 18, 2023 am 11:00 AM

    So verwenden Sie RabbitMQ, um die verteilte Nachrichtenverarbeitung in PHP zu implementieren. Einführung: In der groß angelegten Anwendungsentwicklung sind verteilte Systeme zu einer häufigen Anforderung geworden. Die verteilte Nachrichtenverarbeitung ist ein Muster, das die Effizienz und Zuverlässigkeit des Systems verbessert, indem Aufgaben auf mehrere Verarbeitungsknoten verteilt werden. RabbitMQ ist ein zuverlässiges Open-Source-Nachrichtenwarteschlangensystem, das das AMQP-Protokoll verwendet, um die Nachrichtenzustellung und -verarbeitung zu implementieren. In diesem Artikel erfahren Sie, wie Sie RabbitMQ in PHP zur Verteilung verwenden

    Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

    SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

    Verwenden von RabbitMQ in Go: Eine vollständige Anleitung Verwenden von RabbitMQ in Go: Eine vollständige Anleitung Jun 19, 2023 am 08:10 AM

    Da moderne Anwendungen immer komplexer werden, ist Messaging zu einem leistungsstarken Werkzeug geworden. In diesem Bereich hat sich RabbitMQ zu einem sehr beliebten Nachrichtenbroker entwickelt, mit dem Nachrichten zwischen verschiedenen Anwendungen übermittelt werden können. In diesem Artikel erfahren Sie, wie Sie RabbitMQ in der Go-Sprache verwenden. Dieses Handbuch behandelt Folgendes: Einführung in RabbitMQ RabbitMQ-Installation RabbitMQ-Grundkonzepte Erste Schritte mit RabbitMQ in Go RabbitMQ und Go

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Aug 15, 2023 pm 04:49 PM

    In diesem Artikel wird ein detailliertes Beispiel geschrieben, um über die tatsächliche Entwicklung von Dubbo + Nacos + Spring Boot zu sprechen. In diesem Artikel wird nicht zu viel theoretisches Wissen behandelt, sondern das einfachste Beispiel wird geschrieben, um zu veranschaulichen, wie Dubbo in Nacos integriert werden kann, um schnell eine Entwicklungsumgebung aufzubauen.

    Lösung für die Echtzeit-Datensynchronisierung zwischen Golang und RabbitMQ Lösung für die Echtzeit-Datensynchronisierung zwischen Golang und RabbitMQ Sep 27, 2023 pm 10:41 PM

    Einführung in die Lösung für die Echtzeit-Datensynchronisierung zwischen Golang und RabbitMQ: In der heutigen Zeit, mit der Popularität des Internets und dem explosionsartigen Wachstum des Datenvolumens, wird die Echtzeit-Datensynchronisierung immer wichtiger. Um die Probleme der asynchronen Datenübertragung und Datensynchronisierung zu lösen, haben viele Unternehmen damit begonnen, Nachrichtenwarteschlangen zu verwenden, um eine Echtzeitsynchronisierung von Daten zu erreichen. In diesem Artikel wird eine Echtzeit-Datensynchronisierungslösung basierend auf Golang und RabbitMQ vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Was ist RabbitMQ? Rabbi

    Anwendungspraxis von Go-Zero und RabbitMQ Anwendungspraxis von Go-Zero und RabbitMQ Jun 23, 2023 pm 12:54 PM

    Jetzt beginnen immer mehr Unternehmen, das Microservice-Architekturmodell zu übernehmen, und in dieser Architektur sind Nachrichtenwarteschlangen zu einer wichtigen Kommunikationsmethode geworden, unter denen RabbitMQ weit verbreitet ist. In der Go-Sprache ist Go-Zero ein Framework, das in den letzten Jahren entstanden ist. Es bietet Entwicklern eine einfachere Verwendung von Nachrichtenwarteschlangen. Im Folgenden werden wir Go-Zero anhand praktischer Anwendungen vorstellen und Anwendungspraxis von RabbitMQ. 1.RabbitMQ-ÜbersichtRabbit

    Golang RabbitMQ: Architekturentwurf und Implementierung eines hochverfügbaren Nachrichtenwarteschlangensystems Golang RabbitMQ: Architekturentwurf und Implementierung eines hochverfügbaren Nachrichtenwarteschlangensystems Sep 28, 2023 am 08:18 AM

    GolangRabbitMQ: Der architektonische Entwurf und die Implementierung eines hochverfügbaren Nachrichtenwarteschlangensystems erfordern spezifische Codebeispiele. Einführung: Mit der kontinuierlichen Entwicklung der Internettechnologie und ihrer breiten Anwendung sind Nachrichtenwarteschlangen zu einem unverzichtbaren Bestandteil moderner Softwaresysteme geworden. Als Werkzeug zur Erzielung von Entkopplung, asynchroner Kommunikation, fehlertoleranter Verarbeitung und anderen Funktionen bietet die Nachrichtenwarteschlange Unterstützung für hohe Verfügbarkeit und Skalierbarkeit für verteilte Systeme. Als effiziente und prägnante Programmiersprache wird Golang häufig zum Aufbau von Systemen mit hoher Parallelität und hoher Leistung verwendet.

    See all articles