RabbitMQ的项目示例
RabbitMQ简介
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ。
以下是自己敲的一个小项目,代码复制可用。
创建java项目
创建测试类,导入jar包
示例 1
其中P代表生产者、C表示消费者、中间红色部分代表消息队列
package com.rabbit;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
/**
*
* 类名称:Test01
* 类描述:发送消息
* 创建人:xxx
*
*/
public class Test01 {
public static void main(String[] args) throws IOException, TimeoutException {
//创建链接工厂
ConnectionFactory connFac = new ConnectionFactory() ;
//默认链接的主机名,RabbitMQ-Server安装在本机,所以可以直接用127.0.0.1
connFac.setHost("127.0.0.1");
//创建链接
Connection conn = connFac.newConnection() ;
//创建信息管道
Channel channel = conn.createChannel() ;
// 创建一个名为queue01的队列,防止队列不存在
String queueName = "queue01" ;
//进行信息声明 1.队列名2.是否持久化,3是否局限与链接,4不再使用是否删除,5其他的属性
channel.queueDeclare(queueName, false, false, false, null) ;
String msg = "Hello World!";
//发送消息
// 在RabbitMQ中,消息是不能直接发送到队列,它需要发送到交换器(exchange)中。
// 第一参数空表示使用默认exchange,第二参数表示发送到的queue,第三参数是发送的消息是(字节数组)
channel.basicPublish("", queueName , null , msg.getBytes());
System.out.println("发送 message[" + msg + "] to "+ queueName +" success!");
//关闭管道
channel.close();
//关闭连接
conn.close();
}
}
控制台中显示:
RabbitMQ中显示:
package com.rabbit;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;
/**
*
* 类名称:Test02
* 类描述:接受消息
* 创建人:xxx
*
*/
public cla