@@ -5,6 +5,7 @@ import io.grpc.ChannelCredentials
55import io.hstream.BufferedProducerBuilder
66import io.hstream.Cluster
77import io.hstream.ConsumerBuilder
8+ import io.hstream.ConsumerInformation
89import io.hstream.HStreamClient
910import io.hstream.ProducerBuilder
1011import io.hstream.Query
@@ -23,6 +24,7 @@ import io.hstream.internal.DeleteViewRequest
2324import io.hstream.internal.GetQueryRequest
2425import io.hstream.internal.GetViewRequest
2526import io.hstream.internal.HStreamApiGrpcKt
27+ import io.hstream.internal.ListConsumersRequest
2628import io.hstream.internal.ListQueriesRequest
2729import io.hstream.internal.ListShardsRequest
2830import io.hstream.internal.ListStreamsRequest
@@ -262,6 +264,15 @@ class HStreamClientKtImpl(bootstrapServerUrls: List<String>, credentials: Channe
262264 }
263265 }
264266
267+ override fun listConsumers (subscriptionId : String? ): List <ConsumerInformation > {
268+ return runBlocking {
269+ val serverUrl = lookupSubscriptionServerUrl(subscriptionId)
270+ val stub = HStreamApiGrpcKt .HStreamApiCoroutineStub (channelProvider.get(serverUrl))
271+ stub.listConsumers(ListConsumersRequest .newBuilder().setSubscriptionId(subscriptionId).build())
272+ .consumersList.stream().map(GrpcUtils ::consumerInformationFromGrpc).toList()
273+ }
274+ }
275+
265276 private final suspend fun lookupSubscriptionServerUrl (subscriptionId : String? ): String {
266277 return unaryCallCoroutine {
267278 val req: LookupSubscriptionRequest =
0 commit comments