dddca63396cb80aa37d525663458af440f870892
[dmaap/messagerouter/msgrtr.git] / src / main / java / org / onap / dmaap / messagerouter / msgrtr / nsa / cambria / 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.messagerouter.msgrtr.nsa.cambria.backends;
23
24 import java.util.Collection;
25
26 /**
27  * This is the factory class to instantiate the consumer
28  * 
29  * @author author
30  *
31  */
32
33 public interface ConsumerFactory {
34         public static final String kSetting_EnableCache = "cambria.consumer.cache.enabled";
35         public static boolean kDefault_IsCacheEnabled = true;
36
37         /**
38          * User defined exception for Unavailable Exception
39          * 
40          * @author author
41          *
42          */
43         public class UnavailableException extends Exception {
44                 /**
45                  * Unavailable Exception with message
46                  * 
47                  * @param msg
48                  */
49                 public UnavailableException(String msg) {
50                         super(msg);
51                 }
52
53                 /**
54                  * Unavailable Exception with the throwable object
55                  * 
56                  * @param t
57                  */
58                 public UnavailableException(Throwable t) {
59                         super(t);
60                 }
61
62                 /**
63                  * Unavailable Exception with the message and cause
64                  * 
65                  * @param msg
66                  * @param cause
67                  */
68                 public UnavailableException(String msg, Throwable cause) {
69                         super(msg, cause);
70                 }
71
72                 private static final long serialVersionUID = 1L;
73         }
74
75         /**
76          * For admin use, drop all cached consumers.
77          */
78         public void dropCache();
79
80         /**
81          * Get or create a consumer for the given set of info (topic, group, id)
82          * 
83          * @param topic
84          * @param consumerGroupId
85          * @param clientId
86          * @param timeoutMs
87          * @return
88          * @throws UnavailableException
89          */
90         public Consumer getConsumerFor(String topic, String consumerGroupId,
91                         String clientId, int timeoutMs) throws UnavailableException;
92
93         /**
94          * For factories that employ a caching mechanism, this allows callers to
95          * explicitly destory a consumer that resides in the factory's cache.
96          * 
97          * @param topic
98          * @param consumerGroupId
99          * @param clientId
100          */
101         public void destroyConsumer(String topic, String consumerGroupId,
102                         String clientId);
103
104         /**
105          * For admin/debug, we provide access to the consumers
106          * 
107          * @return a collection of consumers
108          */
109         public Collection<? extends Consumer> getConsumers();
110 }