+ *
+ * @deprecated Since 2.1. Use {@link #close(Duration)} or {@link #close()}.
*/
+ @Deprecated
@Override
public void close(long timeout, TimeUnit timeUnit) {
close(timeout, timeUnit, false);
}
+ /**
+ * This method waits up to <code>timeout</code> for the producer to complete the sending of all incomplete requests.
+ * <p>
+ * If the producer is unable to complete all requests before the timeout expires, this method will fail
+ * any unsent and unacknowledged records immediately.
+ * <p>
+ * If invoked from within a {@link Callback} this method will not block and will be equivalent to
+ * <code>close(Duration.ofMillis(0))</code>. This is done since no further sending will happen while
+ * blocking the I/O thread of the producer.
+ *
+ * @param timeout The maximum time to wait for producer to complete any pending requests. The value should be
+ * non-negative. Specifying a timeout of zero means do not wait for pending send requests to complete.
+ * @throws InterruptException If the thread is interrupted while blocked
+ * @throws IllegalArgumentException If the <code>timeout</code> is negative.
+ */
+ @Override
+ public void close(Duration timeout) {
+ close(timeout.toMillis(), TimeUnit.MILLISECONDS, false);
+ } |