In the latest release rocketmq-client-go sdk (version 2.1.0, the cancel function is not be called, this will cause memory/resources leak.
e.g. in the producer.go, line #244 :
ctx, _ = context.WithTimeout(ctx, 3*time.Second)
According to the go doc:
WithTimeout returns WithDeadline(parent, time.Now().Add(timeout)).
Canceling this context releases resources associated with it, so code should
call cancel as soon as the operations running in this Context complete:
func slowOperationWithTimeout(ctx context.Context) (Result, error) {
ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond)
defer cancel() // releases resources if slowOperation completes before timeout elapses
return slowOperation(ctx)
}