RabbitMQ入门教程
1、下载安装RabbitMQ
windows下
先 下载Erlang 64位 其它去这里下载 http://www.erlang.org/downloads
然后 下载RabbitMQ 官网 http://www.rabbitmq.com/install-windows.html
rabbitMq jar包 下载地址
maven依赖
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.6.5</version>
</dependency>
安装完成后运行 rabbitMq安装目录下sbin/rabbitmq-server.bat 或者 在cmd下:进入sbin目录,运行rabbitmq-server start
2.Java入门实例
发送端:Producer.java 连接到RabbitMQ(此时服务需要启动),发送一条数据,然后退出。
package top.lilixin.maintest; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; /**
* @Project: rabbitMq
* @Author: lilixin
* @Date: 2016年8月17日
* @Copyright: 2016 www.lilixin.top Inc. All rights reserved.
*/
public class Producer {
private static final String QUEUE_NAME = "hello world"; public static void main(String[] args) throws IOException, TimeoutException {
//创建到rabbitmq的连接
ConnectionFactory factory = new ConnectionFactory();
//设置rabbitmq所在主机ip或地址
factory.setHost("localhost");
//创建一个连接
Connection conn = factory.newConnection();
//创建一个频道
Channel channel = conn.createChannel();
//指定一个队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
//发送的消息
String msg = "this is my first rabbitmq msg";
//往队列里发一条消息
channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
System.out.println(" [x] Sent '" + msg + "'");
//关闭频道和连接
channel.close();
conn.close();
}
}
值得注意的是队列只会在它不存在的时候创建,多次声明并不会重复创建。信息的内容是字节数组,也就意味着你可以传递任何数据。
接收端:Receiver.java 不断等待服务器推送消息,然后在控制台输出。
package top.lilixin.maintest; import java.io.IOException;
import java.util.concurrent.TimeoutException; import com.rabbitmq.client.AMQP.Queue.DeclareOk;
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; /**
* @Project: rabbitMq
* @Author: lilixin
* @Date: 2016年8月17日
* @Copyright: 2016 www.lilixin.top Inc. All rights reserved.
*/
public class Receiver { private static final String QUEUE_NAME = "hello world"; public static void main(String[] args) throws IOException, TimeoutException, ShutdownSignalException,
ConsumerCancelledException, InterruptedException {
// 创建连接
ConnectionFactory factory = new ConnectionFactory();
// 设置mq的host或者 ip
factory.setHost("localhost");
// 创建一个连接
Connection conn = factory.newConnection();
// 创建一个channel
Channel channel = conn.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) {
// nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)
Delivery delivery = consumer.nextDelivery();
String msg = new String(delivery.getBody());
System.out.println("[x] Received '" + msg + "'");
} }
}
分别运行Send.java和Recv.java 顺序无所谓。前提RabbitMQ服务开启。
RabbitMQ入门教程的更多相关文章
- RabbitMQ入门教程(十七):消息队列的应用场景和常见的消息队列之间的比较
原文:RabbitMQ入门教程(十七):消息队列的应用场景和常见的消息队列之间的比较 分享一个朋友的人工智能教程.比较通俗易懂,风趣幽默,感兴趣的朋友可以去看看. 这是网上的一篇教程写的很好,不知原作 ...
- RabbitMQ入门教程(十六):RabbitMQ与Spring集成
原文:RabbitMQ入门教程(十六):RabbitMQ与Spring集成 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...
- RabbitMQ入门教程(十五):普通集群和镜像集群
原文:RabbitMQ入门教程(十五):普通集群和镜像集群 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.c ...
- RabbitMQ入门教程(十四):RabbitMQ单机集群搭建
原文:RabbitMQ入门教程(十四):RabbitMQ单机集群搭建 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...
- RabbitMQ入门教程(十三):虚拟主机vhost与权限管理
原文:RabbitMQ入门教程(十三):虚拟主机vhost与权限管理 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...
- RabbitMQ入门教程(十二):消息确认Ack
原文:RabbitMQ入门教程(十二):消息确认Ack 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csd ...
- RabbitMQ入门教程(十一):消息属性Properties
原文:RabbitMQ入门教程(十一):消息属性Properties 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...
- RabbitMQ入门教程(十):队列声明queueDeclare
原文:RabbitMQ入门教程(十):队列声明queueDeclare 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...
- RabbitMQ入门教程(九):首部交换机Headers
原文:RabbitMQ入门教程(九):首部交换机Headers 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog ...
- RabbitMQ入门教程(八):远程过程调用RPC
原文:RabbitMQ入门教程(八):远程过程调用RPC 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...
随机推荐
- 理解zookeeper选举机制
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 对象this的引用
this关键字的最大作用就是让类中一个方法,访问该类里的另一个方法或者实例变量. public class Dog {//定义一个方法 public void jump() { System.out. ...
- ajaxFileUpload.js 无刷新上传图片,支持多个参数同时上传,支持 ie6-ie10
/* 131108-xxj-ajaxFileUpload.js 无刷新上传图片 jquery 插件,支持 ie6-ie10 依赖:jquery-1.6.1.min.js 主方法:ajaxFileUpl ...
- warshall、
#include<iostream> int mian() { ][],b[][],c[][]; int i,j,k; cout<<"input the Boolea ...
- JAVA集合一之集合简介(Collection,List,Set)
在编写JAVA程序中,我们经常会遇到需要保存一组数据对象,此时,我们可以采用对象数组来进行多个对象的保存,但对象数组存在一个最大的问题即在于长度上的限制,如果说我们现在要保存一组对象,但是我们并知道数 ...
- BZOJ 1875: [SDOI2009]HH去散步(矩阵乘法)
首先,题意就把我们引向了矩阵乘法,注意边长m<=60,那么就按边建图,变成一个120个点的图,然后乱搞就行了。 PS:WA了N久改了3次终于A了QAQ CODE: #include<cst ...
- 用CSS3 做的星体
制作原理:在我的上一篇随笔中有详细的说明,由于这个方法制作的球,比较耗性能,就只做了3个小球,效果大家可以试验. <!DOCTYPE html><html><head l ...
- ReactiveSwift框架
最近项目不多,所以就研究了一下RxSwift和RAS,RAC以前项目中用过了,在这里我就先简单的介绍一下什么是RAS.总述:在RAC 5.0这个版本,有了很大的改动,API已经重新命名.在和Swift ...
- python学习笔记(一)元组tuple
元组由简单的对象组构成,元组与列表相似,但是元组不能在原处修改.元组位置有序的对象集合,元组通过偏移来访问. 为什么有了列表还要元组?元组的不变性提供了某种完整性,可以确保元组在程序中不被另一个引用修 ...
- bat文件的一些小技巧
bat文件的简介: bat文件是dos下的批处理文件.批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd.在命令提示下键入批处理文件的名称,或者双击该批处理文 ...