nlu90 commented on pull request #10631:
URL: https://github.com/apache/pulsar/pull/10631#issuecomment-856215827


   > While I am ok with doing some refactoring in the interfaces we have for 
Source, Sink, and Function context, this PR also exposes interfaces that are 
originally only for FunctionContext to SourceContext and SinkContext. We should 
consider carefully before introducing these new interfaces in Source and Sink 
Context. I don't want to expose functionality that is not needed.
   > 
   > If this is just a refactor, please keep the current interfaces exposed for 
FunctionContext, SourceContext, and SinkContext.
   
   @jerrypeng Thanks for the review.  Despite the previous shared interfaces, 
the followings new interfaces are exposed to connectors:
   
   ```
   default <S extends StateStore> S getStateStore(String name) {
           throw new UnsupportedOperationException("Component cannot get state 
store");
       }
   
   default PulsarAdmin getPulsarAdmin() {
           throw new UnsupportedOperationException("Component cannot access 
pulsar admin");
       }
       
   default PulsarAdmin getPulsarAdmin(String clusterName) {
           throw new UnsupportedOperationException("Component cannot access 
pulsar admin");
       }
   
   default <O> CompletableFuture<Void> publish(String topicName, O object, 
String schemaOrSerdeClassName) {
           throw new UnsupportedOperationException("Component cannot publish 
message");
       }
   
   default <O> CompletableFuture<Void> publish(String topicName, O object) {
           throw new UnsupportedOperationException("Component cannot publish 
message");
       }
   
   default <O> TypedMessageBuilder<O> newOutputMessage(String clusterName, 
String topicName, Schema<O> schema)
               throws PulsarClientException {
           throw new UnsupportedOperationException("Component can not output 
message to pulsar cluster");
       }
       
   default <O> TypedMessageBuilder<O> newOutputMessage(String topicName, 
Schema<O> schema)
               throws PulsarClientException {
           throw new UnsupportedOperationException("Component can not output 
message to pulsar cluster");
       }
   
   default <O> ConsumerBuilder<O> newConsumerBuilder(Schema<O> schema) throws 
PulsarClientException {
           throw new UnsupportedOperationException("Component can not create 
consumer builder");
       }
   ```
   
   Based on my understanding, these are pulsar cluster interaction methods that 
connectors may need. And actually, I'm planning to add one more interface 
`getPulsarClient` as a following PR to fix 
https://github.com/apache/pulsar/pull/8668 more concretely. 
   
   But I might be missing some of the context here, so please let me know which 
of the newly exposed functionality is not needed and we can discuss and update 
accordingly.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to