RabbitMQ 安卓 一分钟了完成 java客户端与android接收端的消息推送

本文介绍了如何使用RabbitMQ进行Java Android应用的消息推送。通过示例展示了Java客户端如何发送消息,以及Android端如何接收消息。文章提供了完整的代码示例,包括生产者和消费者的实现,并提醒Android端的网络操作需在子线程中执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RabbitMQ 是一个消息代理。这主要的原理十分简单,就是通过接受和转发消息。RabbitMQ不处理文件,而是接受,并存储和以二进制形式将消息转发。在消息的传送过程中,我们使用一些标准称呼:发送消息的程序就是一个生产者,我们使用“P”来描述它;接收消息的程序是消费者,消费过程与接收相似,一个消费者通常是一个等着接受消息的程序,我们使用"C"来描述。来源:http://blog.youkuaiyun.com/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, falsefalsefalsenull);    
  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, falsefalsefalsenull);    
  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.youkuaiyun.com/download/a704755096/9613612

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值