CdcSinks { @Nonnull public static <K, V> Sink<ChangeRecord> remoteMap( @Nonnull String mapName, @Nonnull ClientConfig clientConfig, @Nonnull FunctionEx<? super ChangeRecord, ? extends K> keyFn, @Nonnull FunctionEx<? super ChangeRecord, ? extends V> valueFn ) { String name = "remoteMapCdcSink(" + mapName + ')'; return sink(name, mapName, clientConfig, keyFn, valueFn); } private  CdcSinks(); @Nonnull static Sink<ChangeRecord> map(
            @Nonnull String mapName,
            @Nonnull FunctionEx<? super ChangeRecord, ? extends K> keyFn,
            @Nonnull FunctionEx<? super ChangeRecord, ? extends V> valueFn
    ); @Nonnull static Sink<ChangeRecord> map(
            @Nonnull IMap<? super K, ? super V> map,
            @Nonnull FunctionEx<? super ChangeRecord, ? extends K> keyFn,
            @Nonnull FunctionEx<? super ChangeRecord, ? extends V> valueFn
    ); @Nonnull static Sink<ChangeRecord> remoteMap(
            @Nonnull String mapName,
            @Nonnull ClientConfig clientConfig,
            @Nonnull FunctionEx<? super ChangeRecord, ? extends K> keyFn,
            @Nonnull FunctionEx<? super ChangeRecord, ? extends V> valueFn
    ); static final HazelcastProperty SEQUENCE_CACHE_EXPIRATION_SECONDS; }
@Test public void deleteFromRemoteMap_ViaValueProjection() { HazelcastInstance remoteHz = createRemoteCluster(new Config().setClusterName(randomName()), 2).get(0); ClientConfig clientConfig = getClientConfigForRemoteCluster(remoteHz); p.readFrom(items(() -> Arrays.asList(SYNC1, INSERT2).iterator())) .writeTo(remoteSync(clientConfig)); execute().join(); p = Pipeline.create(); p.readFrom(items(() -> Collections.singletonList(UPDATE1).iterator())) .writeTo(CdcSinks.remoteMap(MAP, clientConfig, r -> (Integer) r.key().toMap().get(ID), r -> null )); execute().join(); assertMap(remoteHz, null, "gbailey@foobar.com"); remoteHz.getMap(MAP).destroy(); remoteHz.shutdown(); }