RabbitMQ使用简记
来源:互联网 发布:虚拟货币网站源码php 编辑:程序博客网 时间:2024/06/03 20:38
RabbitMQ是什么
MQ全称为Message Queue, 即消息队列。MQ是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。RabbitMQ则是一个在AMQP基础上完整的,可复用的企业消息系统。
官方地址:http://www.rabbitmq.com/
RabbitMQ安装与启动
安装命令
终端中输入以下命令
12
brew updatebrew install rabbitmq
配置RabbitMQ
安装完成后需要将/usr/local/sbin添加到环境变量中
打开.bash_profile文件
1
vim ~/.bash_profile
将 PATH=/usr/local/sbin:$PATH
加入文件
通过:wq命令保持文件并退出
1
source ~/.bash_profile
启动RabbitMQ
终端中输入以下命令
1
rabbitmq-server
登录Web管理界面
浏览器地址栏输入 http://localhost:15672/
,账户密码默认 guest
Hello RabbitMQ
通过一个实例来体验RabbitMQ的使用方法。
添加依赖包
在pom.xml文件中新增dependency
12345
<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>3.6.5</version></dependency>
Send实现
12345678910111213141516171819202122232425262728
public class Send {private final static String QUEUE_NAME = "hello";public static void main(String[] argv)throws java.io.IOException {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = null;Channel channel = null;try {connection = factory.newConnection();channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);String message = "Hello Rabbit!";channel.basicPublish("", QUEUE_NAME, null, message.getBytes());System.out.println(" [x] Sent '" + message + "'");} catch (TimeoutException e) {e.printStackTrace();} finally {try {channel.close();} catch (TimeoutException e) {e.printStackTrace();}connection.close();}}}
Recv实现
123456789101112131415161718192021222324252627282930
public class Recv {private final static String QUEUE_NAME = "hello";public static void main(String[] argv)throws java.io.IOException,java.lang.InterruptedException {ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");Connection connection = null;try {connection = factory.newConnection();} catch (TimeoutException e) {e.printStackTrace();}Channel channel = connection.createChannel();channel.queueDeclare(QUEUE_NAME, false, false, false, null);System.out.println(" [*] Waiting for messages. To exit press CTRL+C");Consumer consumer = new DefaultConsumer(channel) {public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)throws IOException {String message = new String(body, "UTF-8");System.out.println(" [x] Received '" + message + "'");}};channel.basicConsume(QUEUE_NAME, true, consumer);}}
测试结果
多次运行Send类 [x] Sent 'Hello Rabbit!'
可以通过界面查看在消息队列中暂存的消息。
此时运行Recv类可以读取消息队列中的消息
1234
[*] Waiting for messages. To exit press CTRL+C[x] Received 'Hello Rabbit!'[x] Received 'Hello Rabbit!'[x] Received 'Hello Rabbit!'
RabbitMQ基本概念
交换器Exchange
- direct交换器:如果路由键匹配的话,消息就被投递到对应的队列。
- fanout交换器:将收到的消息广播到绑定的队列上。
- topic交换器:根据规则,使得来自不同源头的消息能够到达同一队列。
队列Queue
绑定Binding
0 0
- RabbitMQ使用简记
- sql 游标使用简记
- CMFCPropertyGridCtrl 使用简记
- CMFCPropertyGridCtrl 使用简记
- 编译宏使用简记
- TortoiseSVN使用简记
- maven简单使用简记
- Java Applet使用简记
- git 使用简记
- CMFCPropertyGridCtrl 使用简记
- signaltap使用简记
- git使用简记
- setProjectionMap@SQLiteQueryBuilder使用简记
- Gradle使用简记
- Gson使用简记
- hibernate使用简记
- Java Applet使用简记
- Retrofit2使用简记
- 算法训练 摆动序列
- 程序到进程
- javascript 中闭包
- 郑俊雅团队设计的布娃娃,好萌好可爱!
- jQuery大全
- RabbitMQ使用简记
- Sqoop1 从Oracle往Hive迁移数据
- redis安全策略
- accp7.0S2优化myschool数据库设计第五章项目
- codeforces 768C
- AppletViewer使用方法介绍
- SwaggerUI ASP.Net WebAPI2
- 理解spark闭包
- mybatis多对多关系映射