rabbitMq整合Spring後,消費者設定手動ack,並且在業務上控制是否ack
1. 在這裡不提如何整合rabbit mq到Spring。
2. 實現功能的配置都在消費者端:
3. 下面是步驟和說明
(1)在消費者端的mq配置檔案上新增,配置 關鍵程式碼為 acknowledeg = "manual"
,意為表示該消費者的ack方式為手動(此時的queue已經和生產者的exchange通過某個routeKey綁定了)
<rabbit:listener-container connection-factory="connectionFactory" acknowledge="manual"> <rabbit:listener queues="queue_xxx" ref="MqConsumer"/> <rabbit:listener queues="queue_xxx" ref="MqConsumer2"/> </rabbit:listener-container>
(2)新建一個類 MqConsumer ,並實現介面 ChannelAwareMessageListener ,實現onMessage方法,不需要指定方法。
因為下方圖所示,springAMQP中已經實現了一個功能,如果該監聽器已經實現了下面2個介面,則直接呼叫onMessage方法
(3)關鍵點在實現了ChannelAwareMessageListener的onMessage方法後,會有2個引數。
一個是message(訊息實體),一個是channel就是當前的通道
很多地方都沒有說清楚怎麼去手動ack,其實手動ack就是在當前channel裡面呼叫basicAsk的方法,並傳入當前訊息的tagId
第二個引數我其實也沒理解用途,暫時還沒有模擬出場景,所以先不討論。
同樣的,如果要unack或者拒絕訊息(reject)的時候,也是呼叫channel裡面的basicXXX方法就可以了(當然要制定tagId)。
注意如果拋異常或unack(並且requeue為true),訊息會一直重新入佇列,一不小心就會xxxxx一大堆訊息不斷重複~。
//訊息的標識,false只確認當前一個訊息收到,true確認所有consumer獲得的訊息
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
//ack返回false,並重新回到佇列,api裡面解釋得很清楚
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
//拒絕訊息
channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
暫時講完,如果有什麼補充或糾正歡迎大家指出相關推薦
rabbitMq整合Spring後,消費者設定手動ack,並且在業務上控制是否ack
1. 在這裡不提如何整合rabbit mq到Spring。 2. 實現功能的配置都在消費者端: 3. 下面是步驟和說明 (1)在消費者端的mq配置檔案上新增,配置 關鍵程式碼為 acknowledeg = "manual" ,意為表示該消費者的ack方式為手動(此時的qu
RabbitMQ整合spring
username cep virtual containe 1.7 dconf system xmlns war 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://ww
RabbitMQ學習筆記(5)----RabbitMQ整合Spring
在Spring AMQP專案中Spring也提供了對RabbitMQ的支援,這裡在之前學習SpringBoot的時候也整合過,但是今天這裡使用的Spring的xml配置來整個rabbit. Spring AMQP專案地址:https://spring.io/projects/spring-amqp;
RabbitMQ整合Spring配置檔案詳解
一、rabbitmq 配置檔案 在web 專案開發過程中,一般分為生產者配置檔案和消費者配置檔案。 一、準備工作 安裝好rabbitmq,並在專案中增加配置檔案 rabbit.properties 內容如下: rmq.ip=192.188.113.114 rmq.port=
rabbitmq 整合 spring mvc
引入包 <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-ra
rabbitmq 整合spring boot
引入包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo
Rabbitmq 整合Spring,SpringBoot與Docker
最近開始研究訊息佇列框架Rabbitmq,之前對訊息佇列只是有個基本概念而已。至於使用場景也侷限於傳送郵件,傳送系統訊息等。 既然開始學習了,首先上官網把基本概念擼清除後,再看看Spring官方整合文件AMQP,基本上摸清了套路。 專案開始前的準備:
VMware虛擬機器服務設定手動啟動,啟動使用VMware service start.bat進行啟動服務
電腦上安裝了VMware虛擬機器,可是VMware虛擬機器並不常用,因此需要將服務設定成手動啟動,可是每次啟動的時候要啟動5個服務,有點多,因此又編寫了一個VMware service start.bat批處理檔案,進行批處理啟動。一、設定服務為手動啟動二、編
MQ訊息佇列--RabbitMQ整合Spring理論及例項講解
今天Boss叫我去他的小黑屋分配任務,出門就記得倆詞“MQ”、“訊息佇列”。從來都沒聽說過這讓我怎麼搞?對於這種情況我慣有的方法論就是:先搞清楚它是什麼、有什麼用、有什麼工具可用、怎麼用,然後就是……擼起袖子使勁幹吧! 1、什麼是訊息佇列 訊息是指在兩個
RabbitMQ學習系列:五、RabbitMQ整合Spring
最後學習一下RabbitMQ如何整合Spring,畢竟現在大多是使用框架來做專案。這篇主要使用的方式是XML配置。 介紹 RabbitMQ整合Spring的學習中,搭了兩個web專案,一個作為客戶端,一個作為服務端,放在一個專案中也可以實現效果,但
Java ZXing 生成QRCode二維碼的兩種方式,可設定圖片大小,和外白色邊框大小
QRGen在ZXing基礎上開發,這個庫使得利用Java生成QR碼變為小菜一碟。它需要依賴ZXing,所以生成圖案時你同時需要ZXing和QRGen的jar包。 QR 碼最常見的應用便是為網站中一個特定的網頁或下載頁帶來流量。因此,QR碼常常會編碼URL或網站地址,使用者可以通過手機攝像頭掃描,並在其瀏覽器中
奇葩6:下載檔案,沒有設定超時時間,但是還是報錯Connection timed out
現象: 下載檔案 FileUtil fileUtils = new FileUtil(); URL url = new URL(urlStr); urlConn = (HttpURLConnection) url.openConnection(); urlConn.set
hibernate問題,為什麼設定了Dialect,可還是報錯說沒設定
在看慕課網SH整合學生資訊管理系統時出現了這個錯誤 log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the
4 手把手,整合 RabbitMQ & Spring 家族
本為大家講解RabbitMQ如何與Spring系的框架體系進行整合 (RabbitMQ整合Spring(RabbitMQ整合Spring AMQP實戰,RabbitMQ整合Spring Boot實戰 ,RabbitMQ整合SpringCloud實戰) 涉及實
Struts2整合spring注意action的配置,要設定多例模式
struts 2的Action是多例項的並非單例,也就是每次請求產生一個Action的物件。原因是:struts 2的Action中包含資料,例如你在頁面填寫的資料就會包含在Action的成員變數裡面。如果Action是單例項的話,這些資料在多執行緒的環境下就會相互影響,例如造成別人填寫的資料被你看
RabbitMQ與spring整合,配置完整的生產者和消費者
RabbitMQ與AMQP協議詳解可以看看這個 http://www.cnblogs.com/frankyou/p/5283539.html 下面是rabbitMQ和spring整合的配置,我配置了二種ExCahange: topicExchange和direc
spring boot 整合Druid後,sql監控不顯示資料問題
在Druid的配置中增加@@ConfigurationProperties這段配置,就可以檢視sql監控了 package com.cn; import java.sql.SQLException; import javax.sql.DataSource; import
spring整合mybatis後,列印SQL語句
這篇文章拾人牙慧,僅供自己使用 網上說mybatis的早前版本配置列印sql還比較簡單,在3.0.6之後配置方式修改了。 現在的spring-mybatis.xml配置如下: <!-- spring和MyBatis完美整合,不需要mybatis的配置對
spring與RabbitMQ整合 消費者消費不到訊息 重啟才能消費到的問題解決
RabbitMQ是當前一個挺火的訊息佇列中介軟體 相比ActiveMQ 訊息更不容易丟失 我之前用的是ActiveMQ 後邊有的時候會莫名其妙的收不到訊息 專案緊後邊也沒時間排查 經朋友的推薦下 換了RabbitMQ 後邊用著也沒啥問題 今天 的Rabbit
解決spring整合mybatis後,無法列印SQL語句的問題
網上說mybatis的早前版本配置列印sql還比較簡單,在3.0.6之後配置方式修改了。現在的spring-mybatis.xml配置如下:<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSession