wolfstudy commented on pull request #613:
URL: https://github.com/apache/pulsar-client-go/pull/613#issuecomment-921534388


   > > ```
   > > BeforeSendWithContext(ctx context.Context, producer Producer, message 
*ProducerMessage)
   > > ```
   > 
   > Adding a new function to the interface will still be a breaking change. 
Applications will have have to implement the new method and recompile. I think 
that's what we need to figure out. Do we need to support backward compatibility 
or is making a breaking api change ok for the next release.
   
   Yes, my mistake. It seems that adding context does have actual usage 
scenarios and can further improve the processing capabilities of the 
interceptor itself.
   
   If we want to add this feature without breaking backward compatibility, can 
we try to directly expose a new interface to the user in ProducerOptions?
   
   For exampels, in `ProducerOptions`:
   
   ```
   // A chain of interceptors with context, These interceptors will be called 
at some points defined in ProducerInterceptorWithContext interface
   InterceptorsWithContext ProducerInterceptorsWithContext
   ```
   
   and introduce a new interface `ProducerInterceptorsWithContext`:
   
   ```
   type ProducerInterceptorsWithContext interface {
        BeforeSendWithContext(ctx context.Context,producer Producer, message 
*ProducerMessage)
   
        OnSendAcknowledgement(producer Producer, message *ProducerMessage, 
msgID MessageID)
   }
   ```
   
   But it is not a very elegant way to achieve


-- 
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.

To unsubscribe, e-mail: [email protected]

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


Reply via email to