一、使用Docker安装 Rabbitmq
前提:需要安装docker
a)centos7 直接通过yum安装即可:yum install -y docker
b)centos6 rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y docker-io
service docker start
c)Ubuntu 16 apt install docker.io -y
1.1 pull Rabbitmq官方镜像
注释:镜像搜索网站:https://hub.docker.com/
docker pull rabbitmq:3.7.7-management
1.2 创建容器并运行
docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=admin-e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 rabbitmq:3.7.7-management
说明:
-d 后台运行容器;
–name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
–hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户 名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
5、使用命令:docker ps 查看正在运行容器
1.3 测试
二、Spring boot 代码中整合RabbitMq
2.1 添加Maven 对RabbitMq的依赖
<!--引入rbmq依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.2 配置application.yml
spring:
application:
name: spirng-boot-rabbitmq
rabbitmq:
host: 47.22.335.145
port: 5672
username: admin
password: 123456
2.3 编写demo
2.3.1 RabbitmqConfig类
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
/**
* 〈一句话简述该类/接口的功能〉
* 配置队列的topic
* 创建人 Peng zhizhong
* 版本 @version 1.0
* 文件名 RabbitmqConfig
* 创建时间 2019/4/19 14:02
* 注意:需加上@Component 这个注解,不然spring 不会注入这个类,发生query()声明topic失败,消费者监听这个topic 的name 不存在。抛出异常
*/
@Component
public class RabbitmqConfig {
/**
* @return
* 声明topic 的name
*/
@Bean
public Queue query (){
return new Queue("hello");
}
}
2.3.2HelloReceiver类
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* 〈一句话简述该类/接口的功能〉
* 〈功能详细描述〉
* 创建人 Peng zhizhong
* 版本 @version 1.0
* 文件名 HelloReceiver
* 创建时间 2019/4/19 11:16
*/
@Component
@RabbitListener(queues = "hello")
public class HelloReceiver {
@RabbitHandler
public void process(String hello) {
System.out.println("Receiver : " + hello);
}
}
2.3.3 HelloSender类
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* 〈一句话简述该类/接口的功能〉
* 〈功能详细描述〉
* 创建人 Peng zhizhong
* 版本 @version 1.0
* 文件名 HelloSender
* 创建时间 2019/4/19 11:08
*/
@Component
public class HelloSender {
@Autowired
private AmqpTemplate rabbitTemplate;
public void send() {
String context = "hello" + new Date();
System.out.println("Sender : " + context);
this.rabbitTemplate.convertAndSend("hello", context);
}
}
2.4 测试
OK.就先到这里吧