后台管理系统进行到了bgm上传的功能 大概是这样的
image.png
但是在我后台管理系统的服务器中上传之后,我的项目如何也下载我上传的背景音乐呢,就是一个同步的功能,
可以写一个接口,然后传递一个id的参数.
可以用zookeeper.
这里我使用的就是zookeeper.
我个人觉得zookeeper的好处是后台如果挂了 zookeeper还在,
而且可以搭建多个zookeeper的服务,
这样就算有一个zookeeper倒下了 还有千千万万个zookeeper.
首先在pom文件中 引入zookeeper的依赖
<!-- 引入zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.11</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.0</version>
</dependency>
zookeeper在springboot中的配置和ssm是不一样的 因为不需要配置xml文件,所有的配置都是在java类中进行的.
@Component
public class ZKCustor {
/**
* @author employeeeee
* @Description: zookeeper 客户端
* @date 2019/1/18 14:01
* @params * @param null
*/
private CuratorFramework client = null;
final static Logger log = LoggerFactory.getLogger(ZKCustor.class);
public static final String ZOOKEEPER_SERVER = "192.168.1.123:2181";
public void init(){
if (client!=null){
return;
}
//创建重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,5);
//创建zookeeper客户端
client = CuratorFrameworkFactory.builder().connectString(ZOOKEEPER_SERVER)
.sessionTimeoutMs(10000)
.retryPolicy(retryPolicy)
.namespace("admin")
.build();
client.start();
try {
if (client.checkExists().forPath("/bgm")==null){
/**
* @author employeeeee
* @Description: zk有两种节点
* @date 2019/1/18 14:07
* @params * @param 持久节点,创建之后 节点会永远存在 除非你手动删除
* 临时节点 会话断开 自动删除
*/
client.create().creatingParentContainersIfNeeded()
.withMode(CreateMode.PERSISTENT)
.withACL(ZooDefs.Ids.OPEN_ACL_UNSAFE)
.forPath("/bgm");
log.info("zookeeper初始化成功");
}
} catch (Exception e) {
log.error("zookeeper初始化失败");
e.printStackTrace();
}
}
具体对应的属性 server
就是你的zookeeper部署的server
namespace
是你建立的节点 都存放的目录下,这里写的是admin
然后需要在WebMvcService.java
中 加入init()
就是初始化的一个方法.
@Bean(initMethod = "init")
public ZKCustor zkCustor(){
return new ZKCustor();
}
加入这一段就可以了,WebMvcService.java
这个文件就是你用来配置静态资源啊 拦截器啊 需要建的类,要跟你的application
在同级目录下,
然后可以测试一下 ,直接运行,可以发现在你的zookeeper的节点中
image.png
网友评论