recherche

Maison  >  Questions et réponses  >  le corps du texte

队列 - 请问Java里的LinkedBlockingQueue如何在分布式下使用

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

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

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

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

希望前辈们能指导迷津

黄舟黄舟2856 Il y a quelques jours946

répondre à tous(4)je répondrai

  • PHPz

    PHPz2017-04-18 10:28:23

    Pour la distribution distribuée, vous devez utiliser un middleware. Je ne sais pas comment appliquer les choses simultanément à un environnement distribué. Cela ne devrait pas être simple, sinon il n'y aurait pas autant de MQ.

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:28:23

    noisette

    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();
        }
    }

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 10:28:23

    Dans votre environnement distribué, vous souhaitez toujours n'avoir qu'une seule file d'attente. De quelle quantité de mémoire avez-vous besoin ?
    Si vous ne devez avoir qu'une seule file d'attente, vous pouvez envelopper la couche LinkedBlockingQueue pour fournir un service HTTP au monde extérieur, puis laisser les autres machines de la distribution appeler ce service.

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-18 10:28:23

    LinkedBlockingQueue n'est pas recommandé. Il est facile de causer des problèmes. Si elle est trop grande, il y aura beaucoup de problèmes. Si elle est trop petite, il y aura beaucoup de problèmes.

    répondre
    0
  • Annulerrépondre