0

当我写下面的代码时,发现输入了大量的数据,无法正常工作。原因如下:

Future{cause=连接池达到最大等待队列大小 200};

所有数据都被丢弃。怎样才能保证一条数据不丢失并正确使用呢?

        @Override
        public void open(Configuration parameters) throws Exception {
            super.open(parameters);

            vertx = Vertx.vertx();
            RedisOptions options = new RedisOptions();
            options.setType(RedisClientType.STANDALONE)
                    .setMaxPoolSize(30)
                    .setMaxWaitingHandlers(1024)
                    .setPoolRecycleTimeout(15_000)
                    .setMaxPoolWaiting(200)
                    .setPassword("password");

            List<String> clusters = new ArrayList<>();
            clusters.add("redis://host:port/db");
            options.setEndpoints(clusters);
            Redis client = Redis.createClient(vertx, options);
            api = RedisAPI.api(client);
        }

        @Override
        public void invoke(List<String> value, Context context) throws Exception {
            api.hset(value, new Handler<AsyncResult<Response>>() {
                @Override
                public void handle(AsyncResult<Response> responseAsyncResult) {
                    if (!responseAsyncResult.succeeded()) {
                        System.out.println("-----------failed");
                        System.out.println(responseAsyncResult.cause());
                    }
                }
            });
        }

Future{cause=连接池达到最大等待队列大小 2000}

4

0 回答 0