快速了解RabbitMQ

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

Java 客户端库 RabbitMQ 遵循AMQP协议,那是一个开放的,并且通用的消息协议。接下来看下java Android RabbitMQ怎么发送和接收消息:

发送端:生产者

 

package com.lenovo.app.mq;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
public class SendDirect{  
    private final static String QUEUE_NAME = "queue"; //队列名称   
  
    public static void main(String[] arg) throws java.io.IOException{  
    	//1.连接MabbitMQ所在主机ip或者主机名  
        ConnectionFactory factory = new ConnectionFactory();  
        factory.setHost("localhost");factory.setRequestedHeartbeat(3);//连接心跳
        //factory.setHost("110.80.10.26");
        //factory.setPort(5672); 
        //factory.setUsername("123");
        //factory.setPassword("123");
        //创建一个连接   创建一个频道  
        Connection connection = factory.newConnection();  
        Channel channel = connection.createChannel();  
        //2.指定一个队列  
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);  
        
        String message = "hello world";  
        //3.往队列中发出一条消息  
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes());  
        System.out.println("[Send]" + message );  
        //4.关闭频道和连接  
        channel.close();  
        connection.close();  
     }  
} 

 

接收端:消费者

 

package com.lenovo.app.mq;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.QueueingConsumer;
public class ReceiveDirect{  
	    private final static String QUEUE_NAME = "queue";//队列名称    
	    
	    public static void main(String[] arg) throws java.io.IOException,  
	            java.lang.InterruptedException{  
	        //1.打开连接和创建频道,与发送端一样  
	        ConnectionFactory factory = new ConnectionFactory();  
	        factory.setHost("localhost");factory.setRequestedHeartbeat(3);//连接心跳
	        //factory.setHost("110.80.10.26");  
	        //factory.setPort(5672);  
	        //factory.setUsername("123");
	        //factory.setPassword("123");
	        //创建一个连接   创建一个频道  
	        Connection connection = factory.newConnection();  
	        Channel channel = connection.createChannel();  
	        //2.声明队列,主要为了防止消息接收者先运行此程序,队列还不存在时创建队列。  
	        channel.queueDeclare(QUEUE_NAME, false, false, false, null);  
	        System.out.println("Waiting for messages……");  
	          
	        //3.创建队列消费者  
	        QueueingConsumer consumer = new QueueingConsumer(channel);  
	        channel.basicConsume(QUEUE_NAME, true, consumer);//指定消费队列    
	        while (true){  
	         //4.开启nextDelivery阻塞方法(内部实现其实是阻塞队列的take方法)  
	         QueueingConsumer.Delivery delivery = consumer.nextDelivery();  
	         String message = new String(delivery.getBody());  
	         System.out.println("[Received]" + message ); 
	        }  
	  
	    }  
} 

关闭连接

private void closeConn(){ 
		    	if(connection!=null&&connection.isOpen()){
					try {
					connection.close();
					} catch (IOException e) {
					e.printStackTrace();
					}
				}
		    	isConnect=false;
		    }

 

注意:Android网络连接耗时操作需要在子线程中。RabbitMQ client jar包下载地址:http://download.csdn.net/download/a704755096/9613612

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值