一..环境搭建
运行message queue client 的 java代码需要3个步骤
1..装erlang环境
2..erlang环境为了rabbitmq 的server 安装做准备
3..安装server后, 写java 代码
message queue 官网 下载jar 包, 源码
二..启动MQ server
将以上步骤做好后,启动rabbitmq server,启动方法在代码中查看
三..原理介绍
MQ全称为Message Queue, 消息队列(MQ)是一种
应用程序对应用程序的通信方法, 即MQ 用于进程通信
MQ client 的java API, 底层基于java 的socket 通信
发送端代码:
package MessageQueue;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
/**
* 每次运行mq client前, 要启动mq server,
* 路径: C:\r 软件可执行\rabbitmq_server\RabbitMQ Server\rabbitmq_server-3.3.4\sbin
* 运行 rabbitmq-server.bat start
* @author jalo li
*
*/
public class Send {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
System.out.println(" [x] Sent '" + message + "'");
channel.close();
connection.close();
}
}
接收端代码:
package MessageQueue;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.Connection;
public class Recv {
private final static String QUEUE_NAME = "hello";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true, consumer);
while (true) {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();//这个是阻塞方法,发送端publish一下,这里就能拿到一个delivery
String message = new String(delivery.getBody());
System.out.println(" [x] Received '" + message + "'");
}
}
}