Interface HttpRequestDuplicator

All Superinterfaces:
AutoCloseable, SafeCloseable, StreamMessageDuplicator<HttpObject>

public interface HttpRequestDuplicator extends StreamMessageDuplicator<HttpObject>
A duplicator that duplicates a HttpRequest into one or more HttpRequests, which publish the same elements.

 HttpRequest req = ...
 try (HttpRequestDuplicator duplicator = req.toDuplicator()) {
     // req.subscribe(...) will throw an exception. You cannot subscribe to req anymore.

     // Duplicate the request as many as you want to subscribe.
     HttpRequest duplicatedRequest = duplicator.duplicate();
     HttpRequest duplicatedRequest = duplicator.duplicate();

     duplicatedRequest.subscribe(...);
     duplicatedRequest.subscribe(...);
 }
 

Use the try-with-resources block or call StreamMessageDuplicator.close() manually to clean up the resources after all subscriptions are done. If you want to stop publishing and clean up the resources immediately, call StreamMessageDuplicator.abort(). If you do none of these, memory leak might happen.

If you subscribe to the duplicated http request with the SubscriptionOption.WITH_POOLED_OBJECTS, the published elements can be shared across Subscribers. So do not manipulate the data unless you copy them.