当我写下面的代码时,发现输入了大量的数据,无法正常工作。原因如下:
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}