Currently the tasks share a producer. This is nice in terms of potentially coalescing requests to the same broker, keeping port usage reasonable, minimizing the # of connections to brokers (which is nice for brokers, not so important for connect itself). But it also means we unnecessarily tie tasks to each other in other ways – e.g. when one needs to flush, it we effectively block it on other connector's data being produced and acked.
Given that we allocate a consumer per sink, a lot of the arguments for sharing a producer effectively go away. We should decouple the tasks by using a separate producer for each task (or, at a minimum, for each connector's tasks).