RabbitMQ 一二事 - 简单队列使用
消息队列目前流行的有三种
1. RabbitMQ
2. ActiveMQ
3. Kafka
这三种都非常强大,RabbitMQ目前用的比较多,也比较流行,阿里也在用
ActiveMQ是阿帕奇出品,但是性能上和RMQ相比相对差一些
卡夫卡呢,使用场景不同,不多介绍,主要是用于日志收集方面,结合hadoop非常灵活
RabbitMQ官网:http://www.rabbitmq.com/
安装不多说了,可以下载Windows版本,或者linux版本 下载页面:http://www.rabbitmq.com/download.html
我在linux虚拟机上安装的,安装步骤简单,rpm直接安装就行,步骤就略了
成功后可以看到如下页面:

简答队列图

pom方面需要引入如下jar包
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.5.6.RELEASE</version>
</dependency>
</dependencies>
定义一个类似连接池的类
public class ConnectionUtil {
public static Connection getConnection() throws Exception {
// 定义连接工厂
ConnectionFactory factory = new ConnectionFactory();
// 设置服务地址
factory.setHost("192.168.1.205");
// 端口
factory.setPort(5672);
// 设置账号信息,用户名、密码、vhost
factory.setVirtualHost("lee-shop");
factory.setUsername("lee");
factory.setPassword("lee");
// 通过工程获取连接
Connection connection = factory.newConnection();
return connection;
}
}
创建生产者
public class Send {
private final static String QUEUE_NAME = "test_queue";
public static void main(String[] argv) throws Exception {
// 获取到连接以及mq通道
Connection connection = ConnectionUtil.getConnection();
// 从连接中创建通道
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();
}
}
创建消费者
public class Recv {
private final static String QUEUE_NAME = "test_queue";
public static void main(String[] argv) throws Exception {
// 获取到连接以及mq通道
Connection connection = ConnectionUtil.getConnection();
Channel channel = connection.createChannel();
// 声明队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
// 定义队列的消费者
QueueingConsumer consumer = new QueueingConsumer(channel);
// 监听队列
channel.basicConsume(QUEUE_NAME, true, consumer);
// 获取消息
while (true) {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println(" [x] Received '" + message + "'");
}
}
}
debug的时候可以进入rmq的管理页面查看对于的连接数,频道,以及消息队列:




消费者接受到的消息:

对应的官网英文文档如下:
http://www.rabbitmq.com/getstarted.html
RabbitMQ 一二事 - 简单队列使用的更多相关文章
- RabbitMQ 一二事(2) - 工作队列使用
上篇文章讲了简单队列的使用,这其实就是RMQ给的demo,实际并没有什么用 本篇讲讲工作模式队列,也称之为任务队列 一个生产者发布了多条消息,消费者A可以接受消息,接受消息后该消息就消除,消费者B可以 ...
- RabbitMQ 一二事(5) - 通配符模式应用
之前的路由模式是通过key相等来匹配 而通配符,顾名思义,符合条件,则进行消息匹配发送 将路由键和某模式进行匹配.此时队列需要绑定要一个模式上. 符号“#”匹配一个或多个词,符号“*”匹配不多不少一个 ...
- RabbitMQ 一二事(3) - 订阅模式(微信公众号模式)的应用
之前讲的消费者互相可以把队列中的消息全部读取,但是不是读完整的所有信息 那么采用订阅模式就行,这就是微信公众号的模式, 比如10个人订阅了我的公众号"BeJavaGod",当我发送 ...
- RabbitMQ 一二事(4) - 路由模式介绍
路由模式其实和订阅模式差不多,只不过交换机的类型不同而已 路由模式可以用下图来表示,比订阅模式多了一个key,举个栗子就是根据不同的人群来订阅公众号,来收取消息 根据不同的key来获取不同的消息 最简 ...
- Rabbit简单队列模式
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/ ...
- Hadoop 一二事(1) - 简单介绍与杂谈
大数据大数据,身边很多朋友都在谈大数据,Big Data!!! 到底是什么,用来干嘛的,也很少有人说得出一二,那今天开始就简单说说这一二事吧 hadoop 的来源:是作者女儿的一个玩具 - 一只黄色的 ...
- RabbitMq 之简单队列
简单队列类似于我们的生产者,消费者, 一个生产者,对应一个消费者. 直接上代码: package com.j1.rabbitmq.simple; import com.j1.rabbitmq.util ...
- RabbitMQ (二) 简单队列
参考:https://blog.csdn.net/vbirdbest/article/details/78583480 简单队列的模型: P : 生产者,即 Producer C : 消费者,即 Co ...
- RabbitMQ学习笔记(2)----RabbitMQ简单队列(Hello World)的使用
1. 简单队列结构图 2. 引入依赖 pom.xml文件 <dependency> <groupId>com.rabbitmq</groupId> <arti ...
随机推荐
- guacamole 0.9.9安装与配置
以下命令很多都需要管理权限,建议使用管理员账号执行,遇到问题可以留言. 1.首先需要安装guacamole所需要的依赖库 必需安装的库有:Cairo.libjpeg-turbo.libpng.OSSP ...
- ASP.NET MVC的请求生命周期
我希望能理解在浏览器输入URL并敲击回车来请求一个ASP.NET MVC网站的页面之后发生的任何事情. 为什么需要关心这些?有两个原因.首先是因为ASP.NET MVC是一个扩展性非常强的框架.例如, ...
- python基础之基本算法和装饰器
1.冒泡排序 关于冒泡排序实现大小比较,大索引会向后移动,这次循环将最大数值直接移动至最后. li = [,,,,] ): ]: temp = li[i] li[i] = li[i + ] li[i ...
- ArcGIS的许可文件问题
ArcGIS我是从9.3版本开始使用的,当时破解非常麻烦,容易出现各种问题,当时生成的许可文件是一个单独的exe:后来10版本甚至10.1都出来,我还是使用的那个exe来生成许可文件,正常使用没有问题 ...
- Dynamics CRM 2013 SP1 升级到Dynamics CRM 2015
首先截图一下我要升级的Dynamics CRM 2013版本如下图,可以看到是打了SP1后的CRM 2013. 运行CRM 2015简体中文版的安装文件CRM2015-Server- ...
- Core Data的简单用法
#import "ViewController.h" // 第一步:引入头文件AppDelegate #import "AppDelegate.h" #impo ...
- [转]android访问网络:java.net.ConnectException: localhost/127.0.0.1:8888 - Connection refused
这对刚学会向tomcat模拟的本地服务器发送请求的同学非常重要! 转自:http://wing123.iteye.com/blog/1873763 描述:在做注册功能的时候,向本地服务器:127.0. ...
- 奇怪的cab_xxxx_x文件
最近一段时间发现C盘老是提示空间紧张(显示为红色),之前清理了一次系统盘的\Windows\Temp文件夹,发现了很多文件名类似cab_xxxx_x的cab文件,大概占用了五六个G的空间,当时没太在意 ...
- openstack 上床镜像, 创建网络, 创建虚拟机 命令
==================================================================================================== ...
- ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
当你碰到ORA-12520错误时,如下所示: 英文:ORA-12520: TNS:listener could not find available handler for requested typ ...