安装RabbitMq,写程序发送接收消息
1.安装Erlang和RabbitMq
在安装RabbitMq之前需要安装的Erlang(esl-erlang_22.0_windows_amd64.exe): https://pan.baidu.com/s/1_ExgTzvCRN0byIYXgiA16g
需要安装的RabbitMq(rabbitmq-server-3.7.18.exe):https://pan.baidu.com/s/10UuuukYibnpmm16RtUZw3Q
安装时这两个软件没有特殊设置,一路同意接受就行了。
2.开启RabbitMq的管理
安装完成后,找到RaabitMq的sbin所在的目录,在我的Win10系统上,这个路径是C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.18\sbin,然后打开控制台,进入这个目录.
然后输入>rabbitmq-plugins enable rabbitmq_management
C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.18\sbin>rabbitmq-plugins enable rabbitmq_management Enabling plugins on node rabbit@DESKTOP-8IDBHPK: rabbitmq_management The following plugins have been configured: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch Applying plugin configuration to rabbit@DESKTOP-8IDBHPK... The following plugins have been enabled: rabbitmq_management rabbitmq_management_agent rabbitmq_web_dispatch started 3 plugins. C:\Program Files\RabbitMQ Server\rabbitmq_server-3.7.18\sbin>
这一步的目的是为了能使用RabbitMq的控制界面。
3.查看RabbitMq的控制界面。
打开浏览器,在地址栏输入 http://localhost:15672,在弹出的登录页中都输入guest,登录进去,你将看到下面画面。

看到这个页面后,意味着RabbitMq的安装配置都完成了,下面就可以写代码了。
4.书写代码往队列里发消息
接下来打开SpringToolSuite或者其它Eclipse,新建一个Maven工程,在pom.xml里添加以下红色粗体部分的dependency。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>test</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.9</version>
</dependency>
</dependencies>
</project>
题外话:不用Maven工程,直接用java工程也可,只是你需要自己去找对应的jar包,稍显麻烦。但网络不好用的时候还必须这么做。
创建完工程后就可以写 消息发送者 代码了。
package com.test;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
/**
* Hello world!
*
*/
public class Sender
{
public static void main( String[] args ) throws IOException, TimeoutException
{
ConnectionFactory factory=new ConnectionFactory();
factory.setHost("localhost");
Connection conn=factory.newConnection();
Channel channel=conn.createChannel();
String queueName="MsgQue";
channel.queueDeclare(queueName, false, false, false, null);
String message="hello!RabbitMq";
channel.basicPublish("", queueName, null, message.getBytes());
channel.close();
conn.close();
}
}
执行后不报错就说明消息发到队列里面去了。

5.书写代码从队列里取消息
在同一个工程里另外起一个类,书写下面的代码:
package com.test;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Consumer;
import com.rabbitmq.client.DefaultConsumer;
import com.rabbitmq.client.Envelope;
public class Comsumer {
public static void main( String[] args ) throws IOException, TimeoutException
{
ConnectionFactory factory=new ConnectionFactory();
factory.setHost("localhost");
Connection conn=factory.newConnection();
Channel channel=conn.createChannel();
String queueName="MsgQue";
channel.queueDeclare(queueName, false, false, false, null);
Consumer consumer=new DefaultConsumer(channel) {
@Override
public void handleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body) throws IOException {
String msg=new String(body,"UTF-8");
System.out.println("收到消息:"+msg);
}
};
channel.basicConsume(queueName, true, consumer);
}
}
这个类启动后就处于阻塞状态,阻塞就像一条船堵在运河(channel)上,这时从运河上飘来的东西(消息)都会被船(消息消费者)截获住。
下面是控制台的输出,其中第一条消息是消费者启动前发上去的,第二条是消费者处于阻塞时再发的,两条消息都被消费者收取(截获)了。
收到消息:你好!RabbitMq 收到消息:hello!RabbitMq
下图显示了消费者的状态:

好了,到此任务完成,恭喜你又做了一个Hello World程序。
参考书:
1.《疯狂Spring Cloud微服务架构实战》杨恩雄 编著
--END-- 2019年9月28日10:36:05
安装RabbitMq,写程序发送接收消息的更多相关文章
- 【Spring】使用Spring和AMQP发送接收消息(上)
讲AMQP之前,先讲下传统的JMS的消息模型,JMS中主要有三个参与者:消息的生产者.消费者.传递消息的通道(队列或者主题),两种消息模型如下:通道是队列: 通道是队列: 通道是主题: 在JMS中,虽 ...
- 微信小程序发送模板消息
微信小程序发送模板消息 标签(空格分隔): php 看小程序文档 [模板消息文档总览]:https://developers.weixin.qq.com/miniprogram/dev/framewo ...
- GCM 发送接收消息 Message Client Server 服务器端,客户端
GCM 传递参数 最近用了很多时间做GCM,由于碰到很多问题,因此详细做一下记录,以方便各位网友,不用再走我的重复的路.不过我试了一下GCM在国内很不好用.假如开发国外的程序的话,用GCM倒是很不错的 ...
- 【Spring】使用Spring和AMQP发送接收消息(中)
上篇讲了RabbitMQ连接工厂的作用是用来创建RabbitMQ的连接,本篇就来讲讲RabbitMQ的发送消息.通过RabbitMQ发送消息最简单的方式就是将connectionFactory Bea ...
- 【Spring】使用Spring和AMQP发送接收消息(下)
上篇讲了使用RabbitMQ发送消息,本篇则来讲接收消息.在传统JMS中有两种从队列获取信息的方式,使用JmsTemplate的同步方式以及使用消息驱动pojo的异步方式.Spring AMQP也提供 ...
- ActiveMQ安装与入门程序 & JMS的消息结构
1.Activemq安装 直接到官网下载:记住apache的官网是域名反过来,比如我们找activemq就是activemq.apache.org. 最新版本要求最低的JDK是8,所以最好在电脑装多个 ...
- 微信小程序 发送模板消息的功能实现
背景 - 小程序开发的过程中,绝大多数会满足微信支付 - 那么,作为友好交互的体现,自然就会考虑到支付后的消息通知咯 - 所以,我的小程序项目也要求完成这个效果,so.分享一下自己的实现步骤,以方便道 ...
- RabbitMQ如何保证发送端消息的可靠投递-发生镜像队列发生故障转移时
上一篇最后提到了mandatory这个参数,对于设置mandatory参数个人感觉还是很重要的,尤其在RabbitMQ镜像队列发生故障转移时. 模拟个测试环境如下: 首先在集群队列中增加两个镜像队列的 ...
- 微信小程序发送订阅消息(之前是模板消息)
之前的模板消息已经废弃,现在改为订阅消息,订阅消息发布前,需要用户确认后才能接收订阅消息. 小程序端 index.wxml <button bindtap="send"> ...
随机推荐
- 简单聊聊服务发现(redis, zk,etcd, consul)(转载)
服务发现并没有怎样的高深莫测,它的原理再简单不过.只是市面上太多文章将服务发现的难度妖魔化,读者被绕的云里雾里,顿觉自己智商低下不敢高攀. 服务提供者是什么,简单点说就是一个HTTP服务器,提供了AP ...
- C# 中 ContextMenuStrip 和 ContextMenu区别
简单来说,就是版本不同,只不过是升级后建议功能更加强大的ContextMenuStrip罢了,升级后的元件功能更强 . ContextMenu是VS2005里的,而ContextMenuStrip是V ...
- visio连接线随形状移动自动伸缩
粘附可保持形状和连接线彼此依附.粘附打开时,可在移动形状时保持连接线跟着一起移动.粘附关闭时,移动形状时连接线将不会跟着移动. 1.在“视图”选项卡上的“视觉帮助”组中,单击对话框启动器 . 2. ...
- python常有模块:模块、引入语法、两种执行方式、模块搜索顺序
今天主要讲了以下几点:一.模块三问.定义及分类二.import和from的语法三.文件的两种执行方式及搜索顺序四.内置函数 一.模块.import和from的语法 1.什么是模块 模块是一堆功能函 ...
- Rsync+Sersync实时同步数据目录
第1章 Rsync简介 1.1 Rsync基本概述 rsync是一款开源的备份工具,可以在不同主机之间进行同步,可实现全量备份与增量备份 全量:将全部数据,进行传输覆盖 增量:只传输差异部分的数据 1 ...
- List集合删除方法
class Program { private static Random random = new Random((int)DateTime.Now.Ticks); static void Main ...
- kotlin字符串和数字之间的转换和人机交互
继续基础学习~ 字符串和数字之间的转换 那如何转换呢,其实很简单: 编译木有报错,但是运行: 所以这里了解下. 人机交互 看这标题貌似高端的,其实也就是程序可以接受键盘的输入啦,下面开始: 首先提示用 ...
- D - A or...or B Problem
题意:给定A,B,问[A,B]里取任意个数按位或,结果有多少种. 思路:这题需要找出一个分界点,即找到最高位的B是1,A是0的位置x(最低位从0开始),那么对于所有OR的结果,x处要么是1要么是0,x ...
- Mybatis config.xml 配置
<!-- xml标准格式 --><?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- Web Api(4)
参考原文链接https://www.cnblogs.com/JamelAr/,本文大部分内容是根据这位博主进行实验测试的,非常感谢分享,另外也参考了https://www.cnblogs.com/vi ...