安装 Erlang和RabbitMQ Server ,启动RabbitMQ Server
1、安装Erland,通过官方下载页面获取exe安装包,直接打开并完成安装。(好像要翻墙~自己解决)
2、安装完Erland,配置好它的环境变量,变量值是你自己的安装地址,然后再在path变量加入它
%ERLANG_HOME%\bin
3、然后再安装RabbitMQ服务端,注意如果下载高版本的,对erland的版本也是有要求的,当然你两者都下最新的就没问题了。
4、依然是配置好RabbitMQ的环境变量,和在path变量里新加
%RABBITMQ_SERVER%\sbin
5、然后打开命令行(注意要用管理员的身份打开,不然后面会提示错误~)然后输入
rabbitmq-plugins.bat enable rabbitmq_management
开启Web管理插件,这样我们就可以通过浏览器来进行管理了,一般情况下这时候已经自动启动RabbitMQ服务了,我们也可以手动启动验证一下,输入
net start RabbitMQ
要关闭服务的话,输入
net stop RabbitMQ
6、打开web界面,地址 http://localhost:15672/ 默认的用户名:guest 默认的密码为:guest
你可以点击Admin去创建一个新的用户,我下面配置文件就会用到新的用户的用户名跟密码
springboot整合rabbitMQ
1、新建一个springboot工程,并在pom.xml
中引入与rabbitmq有关的依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
|
2、修改application.yml,配置关于RabbitMQ的连接和用户信息(新建的工程配置文件不是这个名字,改成它即可。。。)
1 2 3 4 5 6 7 8 9
| spring: application: name: rabbitmq-test rabbitmq: host: localhost port: 5672 username: admin password: admin
|
3、创建RabbitMQ的配置类RabbitConfig
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;
/** * RabbitMQ的配置类 */ @Configuration public class RabbitConfig { @Bean public Queue helloQueue() { return new Queue("hello"); } }
|
4、我们建立一个消息生产类Sender
,作为生产者的身边
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component;
import java.util.Date;
@Component public class Sender { @Autowired private AmqpTemplate amqpTemplate;
public void send() { String context = "hello " + new Date(); System.out.println("Sender : " + context); amqpTemplate.convertAndSend("hello", context); }
}
|
5、再建立一个消息消费类Receiver
,作为消费者
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component;
@Component @RabbitListener(queues = "hello") public class Receiver {
@RabbitHandler public void process(String hello) { System.out.println("Receiver : " + hello); } }
|
6、最后再创建一个测试类RabbitMQTest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class) @SpringBootTest public class RabbitMQTest { @Autowired private Sender sender;
@Test public void testRabbitMQ(){ sender.send(); } }
|
7、先启动主程序RabbitmqApplication
,我这边碰到一个错误
原来是没给admin这个用户设置管理队列的权限,去set一把即可
再次运行主程序,成功连接RabbitMQ
8、去run我们的测试用例方法,看到控制台输出,表示成功
再切换回主程序,也可以看到输出日志
当然我们在RabbitMQ的页面上也可以看到队列的消费信息记录
以上便是springboot对RabbitMQ的消息生产和消费的最简单的整合,想了解更多请查阅RabbitMQ官网