Ubuntu 中安装 RabbitMQ
首先查看自己数据源,如果不是国内的源,有可能安装不上。Ubuntu数据源切换教程点这里
RabbitMQ安装执行以下命令:
// 输入以下命令进行安装
apt-get install rabbitmq-server
// 安装RabbitMQ监控管理插件进行RabbitMQ的管理
sudo rabbitmq-plugins enable rabbitmq_management
// 查看安装的插件
sudo rabbitmqctl list_users
// 查看用户
sudo rabbitmqctl list_users
// 新增管理员用户 admin 密码也是 admin
sudo rabbitmqctl add_user admin admin
sudo rabbitmqctl set_user_tags admin administrator
// 同时为用户设置读写等权限(如果不设置,项目会出现连接错误)
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
现在可以用浏览器访问:http://IP地址:15672

出现登录界面,现在使用我们刚才创建的admin
账户登录。

登录成功后的界面上图。
与spring boot集成
创建一个maven项目,在pom.xm加入如下内容:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- jdk版本号,Angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
</parent>
<dependencies>
<!-- spring boot web支持:mvc,aop... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
application.properties
配置内容如下
spring.application.name=spring-boot-rabbitmq
spring.rabbitmq.host=192.168.98.75
#是的,你没有看错, 访问管理页面的时候端口是15672,但是在集成是端口是5672
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
Application.java
启动类代码:
import org.springframework.amqp.core.Queue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
/**
* @author : R&M www.rmworking.com/blog
* 2018/4/9 10:47
* spring-boot-demo
* org.springcore
*/
@SpringBootApplication
public class Application {
/**
* 队列初始化,durable是否选择持久化数据,true持久化
* @return
*/
@Bean
public Queue fooQueue() {
return new Queue("foo");
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
消息发送者类HelloSender.java
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* @author : R&M www.rmworking.com/blog
* 2018/6/4 15:44
* spring-boot-demo
* org.rabbitmq.controller
*/
@Service
public class HelloSender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String context = "hello " + new Date();
System.out.println("Sender : " + context);
this.rabbitTemplate.convertAndSend("foo", context);
}
}
消息接受者HelloReceiver.java
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @author : R&M www.rmworking.com/blog
* 2018/6/4 16:57
* spring-boot-demo
* org.rabbitmq.service
*/
@Component
@RabbitListener(queues="foo")
public class HelloReceiver {
//接收到消息处理.
@RabbitHandler
public void onMessage(@Payload String foo){
System.out.println(" >>> "+new Date() + ": " + foo);
}
}
接下来我们写一个单元测试,测试一下生产和消费是否成功:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.rabbitmq.Application;
import org.rabbitmq.service.HelloSender;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
/**
* @author : R&M www.rmworking.com/blog
* 2018/6/4 15:45
* spring-boot-demo
* org.rabbitmq.controller
*/
// 这是JUnit的注解,通过这个注解让SpringJUnit4ClassRunner这个类提供Spring测试上下文。
@RunWith(SpringJUnit4ClassRunner.class)
// 这是Spring Boot注解,为了进行集成测试,需要通过这个注解加载和配置Spring应用上下
@SpringBootTest(classes = Application.class)
@WebAppConfiguration
public class RabbitMqHelloTest {
@Autowired
private HelloSender helloSender;
@Test
public void hello() throws Exception {
helloSender.send();
}
}
执行单元测试,测试可以看到控制台输出:

上面红框是生产了一条数据,下面是消费。然后我们看一下管理界面

成功完成集成~!!!
转载请注明:R&M » Spring Boot集成RabbitMQ