RabbitMQ 安卓 一分鐘了完成 java用戶端與android接收端的訊息推送,rabbitmqandroid

來源:互聯網
上載者:User

RabbitMQ 安卓 一分鐘了完成 java用戶端與android接收端的訊息推送,rabbitmqandroid

RabbitMQ 是一個訊息代理。這主要的原理十分簡單,就是通過接受和轉寄訊息。RabbitMQ不處理檔案,而是接受,並儲存和以二進位形式將訊息轉寄。在訊息的傳送過程中,我們使用一些標準稱呼:發送訊息的程式就是一個生產者,我們使用“P”來描述它;接收訊息的程式是消費者,消費過程與接收相似,一個消費者通常是一個等著接受訊息的程式,我們使用"C"來描述。來源:http://blog.csdn.net/a704755096/article/details/45969717

Java 用戶端庫 RabbitMQ 遵循AMQP協議,那是一個開放的,並且通用的訊息協議。接下來看下java Android RabbitMQ怎麼發送和接收訊息:

發送端:生產者

[java] view plain copy
  1. package com.lenovo.app.mq;  
  2. import com.rabbitmq.client.ConnectionFactory;  
  3. import com.rabbitmq.client.Connection;  
  4. import com.rabbitmq.client.Channel;  
  5. public class SendDirect{    
  6.     private final static String QUEUE_NAME = "queue"; //隊列名稱     
  7.     
  8.     public static void main(String[] arg) throws java.io.IOException{    
  9.         //1.串連MabbitMQ所在主機ip或者主機名稱    
  10.         ConnectionFactory factory = new ConnectionFactory();    
  11.         factory.setHost("localhost");    
  12.         //factory.setHost("110.80.10.26");  
  13.         //factory.setPort(5672);   
  14.         //factory.setUsername("123");  
  15.         //factory.setPassword("123");  
  16.         //建立一個串連   建立一個頻道    
  17.         Connection connection = factory.newConnection();    
  18.         Channel channel = connection.createChannel();    
  19.         //2.指定一個隊列    
  20.         channel.queueDeclare(QUEUE_NAME, false, false, false, null);    
  21.           
  22.         String message = "hello world";    
  23.         //3.往隊列中發出一條訊息    
  24.         channel.basicPublish("", QUEUE_NAME, null, message.getBytes());    
  25.         System.out.println("[Send]" + message );    
  26.         //4.關閉頻道和串連    
  27.         channel.close();    
  28.         connection.close();    
  29.      }    
  30. }   

接收端:消費者

[java] view plain copy
  1. package com.lenovo.app.mq;  
  2. import com.rabbitmq.client.ConnectionFactory;  
  3. import com.rabbitmq.client.Connection;  
  4. import com.rabbitmq.client.Channel;  
  5. import com.rabbitmq.client.QueueingConsumer;  
  6. public class ReceiveDirect{    
  7.         private final static String QUEUE_NAME = "queue";//隊列名稱      
  8.           
  9.         public static void main(String[] arg) throws java.io.IOException,    
  10.                 java.lang.InterruptedException{    
  11.             //1.開啟串連和建立頻道,與發送端一樣    
  12.             ConnectionFactory factory = new ConnectionFactory();    
  13.             factory.setHost("localhost");factory.setRequestedHeartbeat(2);//是否斷網  
  14.             //factory.setHost("110.80.10.26");    
  15.             //factory.setPort(5672);    
  16.             //factory.setUsername("123");  
  17.             //factory.setPassword("123");  
  18.             //建立一個串連   建立一個頻道    
  19.             Connection connection = factory.newConnection();    
  20.             Channel channel = connection.createChannel();    
  21.             //2.聲明隊列,主要為了防止訊息接收者先運行此程式,隊列還不存在時建立隊列。    
  22.             channel.queueDeclare(QUEUE_NAME, false, false, false, null);    
  23.             System.out.println("Waiting for messages……");    
  24.                 
  25.             //3.建立隊列消費者    
  26.             QueueingConsumer consumer = new QueueingConsumer(channel);    
  27.             channel.basicConsume(QUEUE_NAME, true, consumer);//指定消費隊列      
  28.             while (true){    
  29.              //4.開啟nextDelivery阻塞方法(內部實現其實是阻塞隊列的take方法)    
  30.              QueueingConsumer.Delivery delivery = consumer.nextDelivery();    
  31.              String message = new String(delivery.getBody());    
  32.              System.out.println("[Received]" + message );   
  33.             }    
  34.         
  35.         }    
  36. }   

關閉串連

[java] view plain copy
  1. private void closeConn(){   
  2.                 if(connection!=null&&connection.isOpen()){  
  3.                     try {  
  4.                     connection.close();  
  5.                     } catch (IOException e) {  
  6.                     e.printStackTrace();  
  7.                     }  
  8.                 }  
  9.                 isConnect=false;  
  10.             }  

注意:Android網路連接耗時操作需要在子線程中。RabbitMQ client jar包:http://download.csdn.net/download/a704755096/9613612

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。 //blog.csdn.net/mr_jianrong/article/details/72875297

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.