public interface HttpRequestDuplicator extends StreamMessageDuplicator<HttpObject>
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.
| Modifier and Type | Method and Description |
|---|---|
HttpRequest |
duplicate()
Returns a new
HttpRequest that publishes the same HttpDatas and
trailers as the HttpRequest that this duplicator is created from. |
HttpRequest |
duplicate(RequestHeaders newHeaders)
Returns a new
HttpRequest with the specified RequestHeaders that publishes the same
HttpDatas and trailers as the HttpRequest that
this duplicator is created from. |
abort, abort, closeHttpRequest duplicate()
HttpRequest that publishes the same HttpDatas and
trailers as the HttpRequest that this duplicator is created from.duplicate in interface StreamMessageDuplicator<HttpObject>HttpRequest duplicate(RequestHeaders newHeaders)
HttpRequest with the specified RequestHeaders that publishes the same
HttpDatas and trailers as the HttpRequest that
this duplicator is created from.Copyright © 2020 LeanCloud. All rights reserved.