我正在使用vertx3
我需要使用redis来设置和获取值。(Redis可能会在未来更改为其他内容)
我正在为我的实施寻找最佳实践设计。
我正在研究vertx集群,我需要通过eventbus检索消息,然后提取消息并插入到Redis中。
另一方面,我可以通过网络获取请求,并提取消息并将其插入redis
两个选项:
我应该有一个“redis-verticle”通过总线获取消息并写下来。
我应该创建一个“监听器Verticle”来保存DAO,它将保存将写入它们的RedisRepo对象。
我还可以处理网络电话并保留此DAO对象
如果我在spring-app上,我会创建一个DAO,它包含RedisRepo并将其注入我的服务层但是在这里我们得到了eventbus所以我不确定。
(顺便说一下redis数据源我可以改成别的东西所以我要考虑通用包装器)
1.
public class RedisRepoVerticle extends AbstractVerticle {
...
public void start() {
client = new RedisClient("localhost", 6379);
connection = client.connect();
...
vertx.eventBus().consumer("redis-operation", (handler) -> {
{
JsonObject msg = new JsonObject(handler.body().toString());
//write straight to Redis
}
});
}
2.
public class RedisMessageListener extends AbstractVerticle {
DatasourceDAO datasource
...
public void start() {
client = new RedisClient("localhost", 6379);
connection = client.connect();
...
vertx.eventBus().consumer("redis-operation", (handler) -> {
{
JsonObject msg = new JsonObject(handler.body().toString());
datasourceDAO.writeToRedis(..);
}
});
}
//datasourceDAO will hold RedisRepo object
如果我采取第二种选择,我应该开始维持单身吗?我不想复制我的复制品,它将复制我的redisrepo的类