标签:style blog color io os ar 使用 java sp
server端代码:
1 package com.example.helloworld; 2 3 import java.io.IOException; 4 5 import com.rabbitmq.client.Channel; 6 import com.rabbitmq.client.Connection; 7 import com.rabbitmq.client.ConnectionFactory; 8 9 public class Send { 10 11 public static void main(String[] args) throws IOException { 12 13 // 队列名称 14 String queueName = "HELLO"; 15 16 ConnectionFactory factory = new ConnectionFactory(); 17 18 //远程服务器ip,如果在本地测试可以改成localhost 19 factory.setHost("121.40.151.120"); 20 21 //不是在本地测试,用户名和密码必填 22 factory.setUsername("rabbitmqname"); 23 factory.setPassword("rabbitmqpwd"); 24 25 Connection conn = factory.newConnection(); 26 Channel channel = conn.createChannel(); 27 28 /** 29 * 参数说明: 30 * queue:队列名称 31 * durable:队列数据是否可以持久化,true:是,false:否,也就是服务重启后队列数据是否依然存在 32 * exclusive:是否为某一个队列的专用连接 33 * autoDelete:当队列不再被使用也就是没有消费者的时候是否自动删除 34 * arguments:其它参数,比如队列存活时间 35 */ 36 channel.queueDeclare(queueName, false, false, false, null); 37 String message = "Hello World!"; 38 39 /** 40 * 参数说明: 41 * exchange:默认的exchange就是"",是direct类型的, 42 * 任何发往到默认exchange的消息都会被路由到routingKey的名字对应的队列上,如果没有对应的队列,则消息会被丢弃。 43 * routingKey:指定接收消息的队列 44 * props:其它属性,比如消息路由头信息 45 * body:消息内容 46 */ 47 channel.basicPublish("", queueName, null, message.getBytes()); 48 49 System.out.println("[" + message + "]"); 50 51 // 最后,我们关闭channel和连接,释放资源。 52 channel.close(); 53 conn.close(); 54 } 55 56 }
client端代码:
1 package com.example.helloworld; 2 3 import java.io.IOException; 4 5 import com.rabbitmq.client.Channel; 6 import com.rabbitmq.client.Connection; 7 import com.rabbitmq.client.ConnectionFactory; 8 import com.rabbitmq.client.ConsumerCancelledException; 9 import com.rabbitmq.client.QueueingConsumer; 10 import com.rabbitmq.client.ShutdownSignalException; 11 12 public class Recv { 13 14 public static void main(String[] args) throws IOException, ShutdownSignalException, 15 ConsumerCancelledException, InterruptedException { 16 17 // 队列名称 18 String queueName = "HELLO"; 19 20 ConnectionFactory factory = new ConnectionFactory(); 21 22 factory.setHost("121.40.151.120"); 23 factory.setUsername("rabbitmqname"); 24 factory.setPassword("rabbitmqpwd"); 25 26 Connection connection = factory.newConnection(); 27 Channel channel = connection.createChannel(); 28 29 //与服务端一致 30 channel.queueDeclare(queueName, false, false, false, null); 31 32 System.out.println("CRTL+C"); 33 34 // QueueingConsumer:用来缓存服务端推送给我们的消息。 35 QueueingConsumer consumer = new QueueingConsumer(channel); 36 37 /** 38 * 参数说明: 39 * queue:队列名称 40 * autoAck:是否自动应答,true:消息一旦被消费者消费,服务端就知道该消息已经投递,从而从队列中将消息剔除; 41 * false:需要在消费端显示调用channel.basicAck()方法通知服务端,如果没用显示调用,消息将进入 42 * unacknowledged状态,当前消费者连接断开后该消息变成ready状态重新进入队列。 43 * callback:具体消费者类 44 */ 45 channel.basicConsume(queueName, true, consumer); 46 47 while (true) { 48 QueueingConsumer.Delivery delivery = consumer.nextDelivery(); 49 String message = new String(delivery.getBody()); 50 System.out.println("[" + message + "]"); 51 } 52 } 53 54 }
标签:style blog color io os ar 使用 java sp
原文地址:http://www.cnblogs.com/weishaohua/p/4041074.html