1. 程式人生 > >spring與RabbitMQ整合 消費者消費不到訊息 重啟才能消費到的問題解決

spring與RabbitMQ整合 消費者消費不到訊息 重啟才能消費到的問題解決

RabbitMQ是當前一個挺火的訊息佇列中介軟體 相比ActiveMQ 訊息更不容易丟失

我之前用的是ActiveMQ 後邊有的時候會莫名其妙的收不到訊息 專案緊後邊也沒時間排查 經朋友的推薦下 換了RabbitMQ 後邊用著也沒啥問題

今天 的RabbitMQ 突然就出了問題 生產者傳送訊息 消費者監聽不到 消費者重啟才能接收到 這樣的情況肯定不行 專案上線的話要是出現這種問題影響很大的
這裡寫圖片描述
進入RabbitMQ的監控中心 登入 在queue裡邊找到自己的queue 進入 在裡邊可以看到訊息傳送情況

昨天我看了一下我的queue監控 Unacked是1以上 ready是1以上 ready好像是未消費訊息

網上查了一下 好像說訊息未確認 但是卻消費了訊息 這時候訊息堵塞 不知情況如何 先記錄一下

    <rabbit:listener-container  connection-factory="connectionFactory" acknowledge="auto">
        <rabbit:listener ref="searchListenner" queues="coursequeue" response-routing-key="coursequeue"/>
    </rabbit:listener-container>

查看了我的spring配置檔案 我當時的acknowledge為auto 接收到訊息後自動確認訊息 於是就在想 是不是確認不成功了
於是乎 在網上查了手動確認的資料

1.在rabbitmq整合spring的配置檔案中 把下述配置中的acknowledge改為manual

    <rabbit:listener-container  connection-factory="connectionFactory" acknowledge="manual">
        <rabbit:listener ref="searchListenner" queues="coursequeue" response-routing-key="coursequeue"/>
    </rabbit:listener-container
>

2.監聽器繼承ChannelAwareMessageListener 然後重寫onMessage 對訊息進行手動確認

@Component("searchListenner")
public class SearchListenner implements ChannelAwareMessageListener   {
    @Override
    public void onMessage(Message message, Channel channel) throws Exception {
        try {
            channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);//這個就是訊息確認的語句 再往下邊寫自己的邏輯就好
            System.out.println(message.getBody());
        } catch (Throwable e) {
            getLog().error(e.getMessage(), e);
        } 

    }
}

經過上邊的操作 問題解決

相關推薦

springRabbitMQ整合 消費者消費訊息 才能消費到的問題解決

RabbitMQ是當前一個挺火的訊息佇列中介軟體 相比ActiveMQ 訊息更不容易丟失 我之前用的是ActiveMQ 後邊有的時候會莫名其妙的收不到訊息 專案緊後邊也沒時間排查 經朋友的推薦下 換了RabbitMQ 後邊用著也沒啥問題 今天 的Rabbit

022 springRabbitmq整合

ring config resource 進行 virt vat gte urn address 一 .概述   本次我們使用spring幫助我們完成Rabbitmq的使用. 二 .環境的搭建   本次使用springboot的jar文件幫助整合rabbitmq,但是

利用SpringActiveMQ整合傳送、接收訊息例項(QueueTopic模式)

利用Spring與ActiveMQ整合傳送、接收訊息例項,同時使用Queue與Topic兩種模式。 1.執行環境:Win10+Eclipse Java EE IDE Oxygen Release (4.7.0)+jdk1.8 3.向topic傳送訊

RocketMQ批量消費訊息試、消費模式、刷盤方式

一、Consumer 批量消費可以通過consumer.setConsumeMessageBatchMaxSize(10);//每次拉取10條這裡需要分為2種情況1、Consumer端先啟動  2、Consumer端後啟動.   正常情況下:應該是Consumer需要先啟動1

Java中動態載入properties檔案,而需要應用的解決辦法

java中動態載入properties檔案,而不需要重啟應用的解決方法在Java專案中,如果需要使用.properties型別的檔案作為某些配置資訊存放介質的時候,一般都是將.properties檔案放在src目錄下,程式碼大部分都是這樣寫的: Properties pro

RabbitMQSpringMVC整合並實現傳送訊息和接收訊息(持久化)方案二

   RabbitMQ的大約的介紹,上一篇已經有介紹了,這篇不介紹,直接描述RabbitMQ與SpringMVC整合並實現傳送訊息和接收訊息(持久化)。  使用了Spring-rabbit 傳送訊息和接收訊息,我們使用的Maven來管理Jar包,在Maven的pom.xml

spring mybatis整合,mybatis註解起作用

一、首先配置好基礎的資料來源及註解管理器 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><pro

介紹Spring Cloud StreamRabbitMQ整合

Spring Cloud Stream是一個建立在Spring Boot和Spring Integration之上的框架,有助於建立事件驅動或訊息驅動的微服務。在本文中,我們將通過一些簡單的例子來介紹Spring Cloud Stream的概念和構造。 1

SpringBoot 整合 RabbitMQ(包含三種訊息確認機制以及消費端限流)

目錄 說明 生產端 消費端 說明 本文 SpringBoot 與 RabbitMQ 進行整合的時候,包含了三種訊息的確認模式,如果查詢詳細的確認模式設定,請閱讀:RabbitMQ的三種訊息確認

SpringMybatis整合

base package div classpath conf data pac 是否 ner 一 概述 1.整合的目的 將Mapper映射器的創建任務交給Spring容器。 二 具體實現 1.創建sqlSessionFactory: <bean id="sql

springstruts2整合出現錯誤HTTP Status 500 - Unable to instantiate Action

alt 問題 blog src nbsp 文件 spa XML color 在進行spring和struts2整合的時候因為大意遇到了一個問題,費了半天神終於找到了問題所在,故分享出來望廣大博友引以為戒!! 我們都知道在spring和struts2整合時,spring接管了

springquartz整合實現分布式動態創建,刪除,改變執行時間定時任務(mysql數據庫)

ces value 我們 job clu xsd collect 註解 common 背景:因為在項目中用到了定時任務,當時想到了spring的quartz,寫完發現費了很大功夫,光是整合就花了一上午,其中最大的問題就是版本問題,項目中用的是spring3.2.8的版本,查

springmybati整合方法

interface start face mapper con tro p s org lose (1)spring配置文件: <!-- 引入jdbc配置文件 --> <context:property-placeholder lo

SSM整合(2): spring mybatis 整合

分享 eth point names space json cal 返回 autowired 在進行完spring與springmvc整合之後, 繼續 spring與mybatis的整合. 既然是操作數據庫, 那必然不能缺少了連接屬性 一. db.properties j

springshiro整合

web.xml map life servle cti 我認 ref init for spring與shiro整合 (1)加入所需要是jar包 (2)配置shiro Filter(web.xml) <!-- shiro過慮器,DelegatingFilte

spring學習 六 springmybatis整合

spring整合 acl nfa stat 工廠設計 eas ctype tin http   在mybatis學習中有兩種配置文件 :全局配置文件,映射配置文件。mybatis和spring整合,其實就是把mybatis中的全局配置文件的配置內容都變成一個spring容器

springJDBC整合操作

spring依賴注入jdbc: jdbc配置通過硬編碼方式實現: 首先例項類 package com.offcn.pojo; import java.io.Serializable; public class ACount implements Serializable { private

applicationContext-mail.xml SpringjavaMail整合配置檔案

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XM

SpringMyBatis整合

準備工作(MyBatis基本): 1.匯入mybatis-spring、spring-jdbc、spring-tx三個jar包 2.編寫實體類、Mapper介面、Mapper.xml 3.編寫mybatis-config.xml核心配置檔案 整合步驟(基本): 1.匯入commons-dbc

spring redis 整合及使用

1、實現目標   通過redis快取資料。(目的不是加快查詢的速度,而是減少資料庫的負擔)   2、所需jar包     注意:jdies和commons-pool兩個jar的版本是有對應關係的,注意引入jar包是要配對使用,否則將會報錯。因為commons-pooljar的目錄根據