0ac2d0bd85029d33d3a3b756215022d3352bb6f7
[dcaegen2/services/sdk.git] /
1 /*
2  * ============LICENSE_START====================================
3  * DCAEGEN2-SERVICES-SDK
4  * =========================================================
5  * Copyright (C) 2019 Nokia. All rights reserved.
6  * =========================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *       http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=====================================
19  */
20
21 package org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.api;
22
23 import com.google.gson.Gson;
24 import io.netty.handler.ssl.SslContext;
25 import io.vavr.Lazy;
26 import java.time.Duration;
27 import org.jetbrains.annotations.NotNull;
28 import org.jetbrains.annotations.Nullable;
29 import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.RxHttpClient;
30 import org.onap.dcaegen2.services.sdk.rest.services.annotations.ExperimentalApi;
31 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.impl.MessageRouterPublisherImpl;
32 import org.onap.dcaegen2.services.sdk.rest.services.dmaap.client.impl.MessageRouterSubscriberImpl;
33
34 /**
35  * <b>WARNING</b>: This is a proof-of-concept. It is untested. API may change or be removed.  Use at your own risk.
36  * You've been warned.
37  *
38  * @author <a href="mailto:piotr.jaszczyk@nokia.com">Piotr Jaszczyk</a>
39  * @since 1.1.4
40  */
41 @ExperimentalApi
42 public final class DmaapClientFactory {
43
44     private static final Duration DEFAULT_MAX_BATCH_DURATION = Duration.ofSeconds(1);
45     private static final int DEFAULT_MAX_BATCH_SIZE = 512;
46
47     private DmaapClientFactory() {
48     }
49
50     public static @NotNull MessageRouterPublisher createMessageRouterPublisher() {
51         return new MessageRouterPublisherImpl(
52                 RxHttpClient.create(),
53                 DEFAULT_MAX_BATCH_SIZE,
54                 DEFAULT_MAX_BATCH_DURATION);
55     }
56
57     public static @NotNull MessageRouterPublisher createMessageRouterPublisher(@NotNull SslContext sslContext) {
58         return new MessageRouterPublisherImpl(
59                 RxHttpClient.create(sslContext),
60                 DEFAULT_MAX_BATCH_SIZE,
61                 DEFAULT_MAX_BATCH_DURATION);
62     }
63
64     public static @NotNull MessageRouterSubscriber createMessageRouterSubscriber() {
65         return new MessageRouterSubscriberImpl(RxHttpClient.create(), new Gson());
66     }
67
68     public static @NotNull MessageRouterSubscriber createMessageRouterSubscriber(@NotNull SslContext sslContext) {
69         return new MessageRouterSubscriberImpl(
70                 RxHttpClient.create(sslContext),
71                 new Gson());
72     }
73 }