update the package name
[dmaap/messagerouter/msgrtr.git] / src / main / java / org / onap / dmaap / dmf / mr / backends / ConsumerFactory.java
1 /*******************************************************************************
2  *  ============LICENSE_START=======================================================
3  *  org.onap.dmaap
4  *  ================================================================================
5  *  Copyright © 2017 AT&T Intellectual Property. 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  *        http://www.apache.org/licenses/LICENSE-2.0
11 *  
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *  ============LICENSE_END=========================================================
18  *  
19  *  ECOMP is a trademark and service mark of AT&T Intellectual Property.
20  *  
21  *******************************************************************************/
22 package org.onap.dmaap.dmf.mr.backends;
23
24 import java.util.Collection;
25 import java.util.HashMap;
26
27 import org.onap.dmaap.dmf.mr.CambriaApiException;
28
29 /**
30  * This is the factory class to instantiate the consumer
31  * 
32  * @author nilanjana.maity
33  *
34  */
35
36 public interface ConsumerFactory {
37         public static final String kSetting_EnableCache = "cambria.consumer.cache.enabled";
38         public static boolean kDefault_IsCacheEnabled = true;
39
40         /**
41          * User defined exception for Unavailable Exception
42          * 
43          * @author nilanjana.maity
44          *
45          */
46         public class UnavailableException extends Exception {
47                 /**
48                  * Unavailable Exception with message
49                  * 
50                  * @param msg
51                  */
52                 public UnavailableException(String msg) {
53                         super(msg);
54                 }
55
56                 /**
57                  * Unavailable Exception with the throwable object
58                  * 
59                  * @param t
60                  */
61                 public UnavailableException(Throwable t) {
62                         super(t);
63                 }
64
65                 /**
66                  * Unavailable Exception with the message and cause
67                  * 
68                  * @param msg
69                  * @param cause
70                  */
71                 public UnavailableException(String msg, Throwable cause) {
72                         super(msg, cause);
73                 }
74
75                 private static final long serialVersionUID = 1L;
76         }
77
78         /**
79          * For admin use, drop all cached consumers.
80          */
81         public void dropCache();
82
83         /**
84          * Get or create a consumer for the given set of info (topic, group, id)
85          * 
86          * @param topic
87          * @param consumerGroupId
88          * @param clientId
89          * @param timeoutMs
90          * @return
91          * @throws UnavailableException
92          */
93         
94
95         /**
96          * For factories that employ a caching mechanism, this allows callers to
97          * explicitly destory a consumer that resides in the factory's cache.
98          * 
99          * @param topic
100          * @param consumerGroupId
101          * @param clientId
102          */
103         public void destroyConsumer(String topic, String consumerGroupId,
104                         String clientId);
105
106         /**
107          * For admin/debug, we provide access to the consumers
108          * 
109          * @return a collection of consumers
110          */
111         public Collection<? extends Consumer> getConsumers();
112
113         public Consumer getConsumerFor(String topic, String consumerGroupName, String consumerId, int timeoutMs, String remotehost) throws UnavailableException, CambriaApiException;
114         public HashMap getConsumerForKafka011(String topic, String consumerGroupName, String consumerId, int timeoutMs, String remotehost) throws UnavailableException, CambriaApiException;
115
116
117         
118 }