1 /*******************************************************************************
2 * ============LICENSE_START=======================================================
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
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=========================================================
19 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21 *******************************************************************************/
22 package com.att.nsa.cambria.backends.memory;
24 import java.util.ArrayList;
25 import java.util.Collection;
27 import com.att.nsa.cambria.backends.Consumer;
28 import com.att.nsa.cambria.backends.ConsumerFactory;
34 public class MemoryConsumerFactory implements ConsumerFactory
38 * Initializing constructor
41 public MemoryConsumerFactory ( MemoryQueue q )
49 * @param consumerGroupId
55 public Consumer getConsumerFor ( String topic, String consumerGroupId, String clientId, int timeoutMs )
57 return new MemoryConsumer ( topic, consumerGroupId );
60 private final MemoryQueue fQueue;
64 * Define nested inner class
67 private class MemoryConsumer implements Consumer
71 * Initializing MemoryConsumer constructor
76 public MemoryConsumer ( String topic, String consumer )
80 fCreateMs = System.currentTimeMillis ();
81 fLastAccessMs = fCreateMs;
87 * return consumer details
89 public Message nextMessage ()
91 return fQueue.get ( fTopic, fConsumer );
94 private final String fTopic;
95 private final String fConsumer;
96 private final long fCreateMs;
97 private long fLastAccessMs;
100 public void close() {
101 //Nothing to close/clean up.
106 public void commitOffsets()
108 // ignoring this aspect
113 public long getOffset()
120 * get consumer topic name
122 public String getName ()
124 return fTopic + "/" + fConsumer;
128 public long getCreateTimeMs ()
134 public long getLastAccessMs ()
136 return fLastAccessMs;
141 public void destroyConsumer(String topic, String consumerGroupId,
143 //No cache for memory consumers, so NOOP
147 public void dropCache ()
149 // nothing to do - there's no cache here
154 * @return ArrayList<MemoryConsumer>
156 public Collection<? extends Consumer> getConsumers ()
158 return new ArrayList<MemoryConsumer> ();