java .lang.IllegalArgumentException: недопустимый тип: class com.codahale.metrics.Timer $ Context для вставки в asyn c карту - PullRequest
0 голосов
/ 17 июня 2020

Я создал vertx AsyncMap , где я храню таймер dropwizard для указанного c jobId. Но когда я помещаю любое значение в карту, я получаю "java .lang.IllegalArgumentException: Invalid type: class com.codahale.metrics.Timer $ Context to put in asyn c map" error.

Код для инициализации карты: vertxService.getVertx().sharedData().<Long,Context>getClusterWideMap("mapName", ar -> { if(ar.succeeded()){ tempAsyncMap = ar.result(); }else{ log.error("Not able to get cluster wide map with name due to {}:",ar.cause()); } });

код для установки таймера на карту: tempAsyncMap.put(jobId, jobWaitTimer.time(), completionHandler -> {});

1 Ответ

0 голосов
/ 17 июня 2020

Вы не можете поместить объект любого типа на карту всего кластера. Это должен быть один из базовых типов JDK (String, Integer, ... et c), базовых типов Vert.x (Buffer, JsonObject, JsonArray). В противном случае тип должен реализовывать ClusterSerializable.

Но, учитывая тип значения, которым вы хотите поделиться, я бы рекомендовал использовать LocalMap, а не карту всего кластера. Для этого пользовательские объекты должны реализовывать Shareable.

...