5 回答

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超0個(gè)贊
題主的問題在于怎么實(shí)現(xiàn)分布式的blockingqueue,有那么多的回答隊(duì)列容量太大,真的文不對題!
以前看過redis好像也有類似機(jī)制,可以用redis實(shí)現(xiàn)看看,至于容量太大,可以多開幾個(gè)隊(duì)列不就解決了?

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
分布式你還是用中間件吧。concurrent里的東西不知道怎么應(yīng)用到分布式環(huán)境下,應(yīng)該是不簡單,不然也不會有這么多MQ吧。

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
import com.hazelcast.config.Config;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
public class DistributedQueue {
public static void main(String[] args) throws InterruptedException {
Config config = new Config();
HazelcastInstance h = Hazelcast.newHazelcastInstance(config);
BlockingQueue<String> queue = h.getQueue("my-distributed-queue");
queue.offer("item");
String item = queue.poll();
//Timed blocking Operations
queue.offer("anotheritem", 500, TimeUnit.MILLISECONDS);
String anotherItem = queue.poll(5, TimeUnit.SECONDS);
//Indefinitely blocking Operations
queue.put("yetanotheritem");
String yetanother = queue.take();
}
}

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
你這分布式環(huán)境,還想只有一個(gè)隊(duì)列,你這內(nèi)存得有多大啊。
如果非要只有一個(gè)隊(duì)列的話,可以將LinkedBlockingQueue包一層,對外提供一個(gè)HTTP服務(wù),然后讓分布式中其他的機(jī)器,調(diào)用這個(gè)服務(wù)就行了。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊
LinkedBlockingQueue不建議 很容易出問題啊 容量就是個(gè)問題 太大了問題 太小了問題又是一大堆
添加回答
舉報(bào)