vertx上的最佳实践设计。用于存储库的Eventbus或Singleton

时间:2015-09-08 15:14:08

标签: java architecture event-bus vert.x

我正在使用vertx3

我需要使用redis来设置和获取值。(Redis可能会在未来更改为其他内容)

我正在为我的实施寻找最佳实践设计。

我正在研究vertx集群,我需要通过eventbus检索消息,然后提取消息并插入到Redis中。

另一方面,我可以通过网络获取请求,并提取消息并将其插入redis

两个选项:

  1. 我应该有一个“redis-verticle”通过总线获取消息并写下来。

  2. 我应该创建一个“监听器Verticle”来保存DAO,它将保存将写入它们的RedisRepo对象。

    我还可以处理网络电话并保留此DAO对象

  3. 如果我在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的类

0 个答案:

没有答案