2
我想使用Apache Camel JDBC組件讀取Oracle表。我希望Camel能夠在分佈式環境中運行,以滿足可用性問題。但是,我正在閱讀的表與隊列類似,所以我只想在任何給定時間只有一個閱讀器,這樣我就可以避免鎖定問題(Oracle中的混亂)。使用現有組件阻止apache駱駝中的消費者
如果讀者失敗,我希望另一位讀者接管。
您將如何使用開箱即用的Camel組件完成此操作?可能嗎?
我想使用Apache Camel JDBC組件讀取Oracle表。我希望Camel能夠在分佈式環境中運行,以滿足可用性問題。但是,我正在閱讀的表與隊列類似,所以我只想在任何給定時間只有一個閱讀器,這樣我就可以避免鎖定問題(Oracle中的混亂)。使用現有組件阻止apache駱駝中的消費者
如果讀者失敗,我希望另一位讀者接管。
您將如何使用開箱即用的Camel組件完成此操作?可能嗎?
這取決於您的部署體系結構。例如,如果您在主/從配置(針對HA)在Servicemix(或ActiveMQ)上部署您的Camel應用程序,則在給定時間只有一個消費者處於活動狀態...
但是,如果您需要多個運行(爲了可伸縮性而集羣),那麼(除了您編寫自己的鎖定邏輯),它們將(默認情況下)從表中競爭/重複讀取。
這很容易使用Hazelcast Distributed Locking。有一個camel-hazelcast組件,但它不支持鎖定API。一旦你configure your apps參加Hazelcast集羣,然後就就在你需要給定對象同步的任何代碼鎖定API ...
import com.hazelcast.core.Hazelcast;
import java.util.concurrent.locks.Lock;
Lock lock = Hazelcast.getLock(myLockedObject);
lock.lock();
try {
// do something here
} finally {
lock.unlock();
}
謝謝,我用Hazelcast創建一個共享鎖,我的包裹讀者與它。非常棒! – 2011-06-03 19:43:25