1.解决安装rabbitmq-3.*.*版本的时候因为数据默认是保存到C:\Users\**\appDate下面,版本是3开头的运行.\rabbitmq-server.bat启动服务的时候经常会出现报错中文目录错误,就是电脑名字取到中文了。我查看很多资料有配置相关的rebbitmq.conf文件的也有修改环境变量的发现3.*.*版本始终会有中文路径报错问题,建议直接卸载3版本的rabbitmq服务。(注意使用geek卸载不然会有注册表卸载不干净问题)!
http://通过网盘分享的文件:geek.exe 链接: https://pan.baidu.***/s/1R5D1_FoSTZnE-XgF8vgMFQ?pwd=h9t9 提取码: h9t9
2.安装rabbitmq-4.1.4的版本不会出现中文路径报错的问题解决了中文路径编码格式的问题,但是安装rabbitmq-4.1.4所需要对应的Erlang需要使用27版本以上的所以安装以下版本也需要卸载重新安装。rabbitmq-4.1.4的资源提供百度网盘还有网址学习下载,Erlang-27.0资源提供百度网盘还有网址学习下载。rabbitmq版本适配Erlang的查看网址。
| rabbitmq-4.1.4百度网盘下载地址 | 通过网盘分享的文件:rabbitmq-server-4.1.4.exe https://pan.baidu.***/s/1MK6g_RRb4sHF_p0gGQQHVQ?pwd=ywfe 提取码: ywfe |
| Erlang-27.0百度网盘下载地址 | 通过网盘分享的文件:otp_win64_27.0.exe https://pan.baidu.***/s/1Q7XqssOqTa2ENcVD8ap4jw?pwd=k27j 提取码: k27j |
3.安装Erlang-27教程
1.先下载otp_win64_27.0.exe,双击运行。
2.新建Erlang的系统环境变量。ERLANG_HOME 变量值为erlang安装地址【自定义】
3.双击系统变量path,点击“新建”,将%ERLANG_HOME%\bin加入到path中。
%ERLANG_HOME%\bin
4.win+R输入cmd在输入erl显示相关配置信息及时安装成功
4.安装rabittmq-4.1.4教程
1.先下载rabbitmq-server-4.1.4.exe,双击运行。【安装过程一直下一步即可主要是记住你自定义的安装位置】
2.进入你安装好的rabbitmq-4.1.4的sbin目录下。再右键在终端运行。
3.在输入安装web可视化管理页面,输入以下命令。
.\rabbitmq-plugins enable rabbitmq_management
4.查看mq的状态。
.\rabbitmqctl status
5.最后打开rabbitmq服务。
.\rabbitmq-server.bat
6.打开web可视化管理页面。[web管理默认开启占用端口是:15672]
[默认用户名:guest,默认密码:guest]
默认网址:http://localhost:15672
7. 进入这样的页面说明安装成功了
5.Java使用amqp连接rabbitmq的简单注解使用教程
1.springboot的pom.xml文件引入依赖。
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.在你的配置文件中书写rabbitmq的连接配置信息,默认后台语言连接开的端口是5672。
spring.rabbitmq.host= 127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password=guest spring.rabbitmq.virtual-host=/
3.简单注解使用教程
调用方式全局变量绑定相关的事项:
@Autowired private RabbitTemplate rabbitTemplate;
3.1队列名绑定(queues = "weilai")
监听事项书写方式:
@RabbitListener(queues = "weilai")
public void listenSimpleQueue(String msg) {
System.out.println("消费者接收到simple.queue的消息:【" + msg + "】");
}
发送方的书写方式:
@Test
public void testSendMessage2SimpleQueue() {
String queueName = "weilai";
String message = "hello,Spring amqp!";
rabbitTemplate.convertAndSend(queueName,message);
}
3.2 交换机名+key值匹配消息队列,发送消息type = ExchangeTypes.DIRECT
监听事项书写方式:
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "direct.queue2"),
exchange = @Exchange(name = "itcast.direct", type = ExchangeTypes.DIRECT),
key = {"red", "yellow"}
))
public void listenDirectQueue2(String msg) {
System.out.println("消费者接收到direct.queue2的消息【" + msg + "】");
}
发送方式书写方式:
@Test
public void testSendDirectExchange() {
String exchangeName = "itcast.direct";
String message = "hello,blue!";
rabbitTemplate.convertAndSend(exchangeName,"yellow",message);
}
3.3 topic匹配【关键词模糊匹配】:type = ExchangeTypes.TOPIC
3.3.1 后缀模糊匹配方式:key = "#.news"
监听事项书写方式:
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "topic.queue2"),
exchange = @Exchange(name = "itcast.topic", type = ExchangeTypes.TOPIC),
key = "#.news"
))
public void listenTopicQueue2(String msg) {
System.out.println("消费者接收到topic.queue2的消息【" + msg + "】");
}
发送方式书写方式:
@Test
public void testSendTopicExchange() {
String exchangeName = "itcast.topic";
String message = "今天天气不错,我的心情好极了";
rabbitTemplate.convertAndSend(exchangeName,"usa111.news",message);
}
3.3.2 前缀模糊匹配方式:key = "china.#"
监听事项抒写方式:
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "topic.queue1"),
exchange = @Exchange(name = "itcast.topic", type = ExchangeTypes.TOPIC),
key = "china.#"
))
public void listenTopicQueue1(String msg) {
System.out.println("消费者接收到topic.queue1的消息【" + msg + "】");
}
发送方式书写方式:
@Test
public void testSendTopicExchange() {
String exchangeName = "itcast.topic";
String message = "今天天气不错,我的心情好极了";
rabbitTemplate.convertAndSend(exchangeName,"china.rewrw",message);
}
4.注意事项
//不能自动创建queues队列需要你自己穿件登录相关的后台,交换机绑定可以通过下面的方式直接实现***【不能使用变量自动创建相关队列名字,需要在程序启动前必须创建好】
//需要使用相关的key需要必须要有exchange的名字
//有@Queue的name和@Exchange的name可以使用相关的队列名字匹配,还可以使用@Exchange的name加上key的前缀后后缀模糊匹配发送消息队列。
//@RabbitListener(queues = "weilai2")
@RabbitListener(bindings = @QueueBinding(
//使用@QueueBinding必须 @Exchange(name = ""不能使用空******
value = @Queue(name = "direct.queue6"), exchange = @Exchange(name = "", type = ExchangeTypes.DIRECT), key = {}))
public void listenSimpleQueue3(String msg) {
System.out.println("消费者接收到simple.queue的消息:【" + msg + "】");
}
5.同时处理详细队列的数量工作流程:spring.rabbitmq.listener.simple.prefetch=1
6.感谢各位的观看,希望对你有用!!