相信經過了解,基本使用activemq後,大家一定知道佇列裡面有ack模式,他的型別有以下幾種
1、auto_acknowledge = 1 自動確認
2、client_acknowledge = 2 客戶端手動確認
3、dups_ok_acknowledge = 3 自動批量確認
4、session_transacted = 0 事務提交並確認
5、individual_acknowledge = 4 單條訊息確認(自定義ack_mode)
使用方式一般有
1、使用連線建立session
session session = connection.createsession(false, session.auto_acknowledge);
2、spring中配置
注意:當我們只配置了這些,以為在消費者出獲取訊息呼叫message.acknowledge();方法就能控制訊息的消費,很明顯,不行!
查閱資料你會發現,當你獲取訊息的時候,預設的獲取方法裡面沒有走你的這些配置直接就消費了訊息,所以就達不到我們想要的效果,手動控制消費。所以,我們需要重寫乙個方法手動獲取,但是帶上自己的引數。
[html]view plain
copy
/**
* 接收訊息
* @param session
* @param consumer
* @param autoacknowledge 是否開啟手動消費
* @return
* @throws jm***ception
*/
protected message doreceive(session session, messageconsumer consumer,boolean autoacknowledge) throws jm***ception
}
//autoacknowledge如果為真,不進行自動確認
else if (isclientacknowledge(session) && !autoacknowledge)
}
return message;
}
finally
}
[html]view plain
copy
/**
* 由於上面的doreceive(session session, messageconsumer consumer,boolean autoacknowledge)需要呼叫這個方法,
* 而在父類裡面這個方法是私有的,所以直接拷貝下來了
* @param consumer
* @param timeout
* @return
* @throws jm***ception
*/
private message doreceive(messageconsumer consumer, long timeout) throws jm***ception
else if (timeout > 0)
else
}
在獲取內容之前先判斷sessionacknowledgemode的值,根據是否需要手動控制傳入autoacknowledge,達到手動控制的效果。
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...
深入了解Dojo Data
譯自http www.sitepen.com blog 2010 10 13 dive into dojo data 使用dojo data有助於快速建立web應用的介面,且易於嵌入各種資料來源。它在使用者介面與底層資料之間提供了一層抽象層,使得使用者介面開發人員能夠專注於ui的開發,而無需擔心資料...