队列 - 请问Java里的LinkedBlockingQueue如何在分布式下使用
黄舟
黄舟 2017-04-18 10:26:23
0
4
908

如题,请问Java里的LinkedBlockingQueue如何在分布式下使用

因为现在还没有使用MQ等中间件,所以使用了Java里的LinkedBlockingQueue来做队列

可是这个队列只能存在本地,一旦集群的话,每台服务器上就都有一个队列在跑了,就成了多个队列了

我希望能改造成在分布式环境下也只有一个队列,可是无从下手

希望前辈们能指导迷津

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(4)
PHPzhong

Untuk pengedaran teragih, anda harus menggunakan perisian tengah. Saya tidak tahu cara menggunakan perkara itu secara serentak pada persekitaran yang diedarkan. Ia sepatutnya tidak mudah, jika tidak, tidak akan ada begitu banyak MQ.

Peter_Zhu

hazelcast

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();
    }
}
左手右手慢动作

Dalam persekitaran edaran anda, anda masih mahu mempunyai satu baris gilir sahaja.
Jika anda mesti mempunyai hanya satu baris gilir, anda boleh membalut lapisan LinkedBlockingQueue untuk menyediakan perkhidmatan HTTP kepada dunia luar, dan kemudian biarkan mesin lain dalam pengedaran memanggil perkhidmatan ini.

Ty80

LinkedBlockingQueue tidak digalakkan. Mudah menimbulkan masalah Kapasiti adalah masalah

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan