diff options
author | Gilding, Joyce (jg640n) <Joyce.Gilding@amdocs.com> | 2018-01-29 15:00:04 +0000 |
---|---|---|
committer | Gilding, Joyce (jg640n) <Joyce.Gilding@amdocs.com> | 2018-01-30 10:24:18 +0000 |
commit | 4150ee34ae503c83734aca7e62ca9911b354c881 (patch) | |
tree | 6598a1d16483eb480664b8862c86ba801af6d661 /event-client-api/src/main | |
parent | 4e6e8b2714f3e5fe6d6dc064d9d73275c5ee5437 (diff) |
Initial code submit for Event Bus Client library
Change-Id: If0ff82c669872c734ebe0c72bc022beb96c53d11
Issue-ID: AAI-700
Signed-off-by: Gilding, Joyce (jg640n) <Joyce.Gilding@amdocs.com>
Diffstat (limited to 'event-client-api/src/main')
3 files changed, 219 insertions, 0 deletions
diff --git a/event-client-api/src/main/java/org/onap/aai/event/api/EventConsumer.java b/event-client-api/src/main/java/org/onap/aai/event/api/EventConsumer.java new file mode 100644 index 0000000..95effaf --- /dev/null +++ b/event-client-api/src/main/java/org/onap/aai/event/api/EventConsumer.java @@ -0,0 +1,67 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 European Software Marketing Ltd. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.event.api; + +public interface EventConsumer { + + /** + * Fetches any relevant messages currently on the Event Bus, according to the configuration and manages the offsets + * for the client. + * + * @return List of messages fetched from the Event Bus. + * @throws Exception + */ + public Iterable<String> consumeAndCommit() throws Exception; + + + /** + * Fetches any relevant messages currently on the Event Bus, according to the configuration and expects the client + * to explicitly call the {@link #commitOffsets()} in order to commit the offsets + * + * @return List of messages fetched from the Event Bus. + * @throws Exception + */ + public Iterable<String> consume() throws Exception; + + /** + * Fetches any relevant messages currently on the Event Bus with their offsets, according to the configuration and + * expects the client to explicitly call the {@link #commitOffsets()} in order to commit the offsets + * + * @throws Exception + */ + public Iterable<MessageWithOffset> consumeWithOffsets() throws Exception; + + /** + * Commits the offsets of the previously consumed messages from the Event Bus + * + * @throws Exception if the offsets could not be committed + */ + public void commitOffsets() throws Exception; + + /** + * Commits the offsets of messages consumed up to offset + * + * @throws Exception if the offsets could not be committed + */ + public void commitOffsets(long offset) throws Exception; +} diff --git a/event-client-api/src/main/java/org/onap/aai/event/api/EventPublisher.java b/event-client-api/src/main/java/org/onap/aai/event/api/EventPublisher.java new file mode 100644 index 0000000..a5de093 --- /dev/null +++ b/event-client-api/src/main/java/org/onap/aai/event/api/EventPublisher.java @@ -0,0 +1,111 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 European Software Marketing Ltd. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.event.api; + +import java.util.Collection; + +public interface EventPublisher { + + /** + * Publishes a message using the supplied partition key, using the parameters from the constructor. + * + * @param partitionKey The partition to publish the message on. + * @param message The String message to publish. + * @return The number of messages successfully sent + * @throws Exception + */ + public int sendSync(String partitionKey, String message) throws Exception; + + /** + * Publishes a message using the supplied partition key, using the parameters from the constructor. + * + * @param partitionKey The partition to publish the messages on. + * @param messages A Collection of messages to publish. + * @return The number of messages successfully sent + * @throws Exception + */ + public int sendSync(String partitionKey, Collection<String> messages) throws Exception; + + /** + * Publishes a message using the parameters from the constructor. + * + * @param message The String message to publish. + * @return The number of messages successfully sent + * @throws Exception + */ + public int sendSync(String message) throws Exception; + + /** + * Publishes a message using the parameters from the constructor. + * + * @param messages A Collection of messages to publish. + * @return The number of messages successfully sent + * @throws Exception + */ + public int sendSync(Collection<String> messages) throws Exception; + + /** + * Publishes a message using the supplied partition key, using the parameters from the constructor. The Async method + * returns immediately without caring if the message was properly published or not. + * + * @param partitionKey The partition to publish the message on. + * @param message The String message to publish. + * @throws Exception + */ + public void sendAsync(String partitionKey, String message) throws Exception; + + /** + * Publishes a message using the supplied partition key, using the parameters from the constructor. The Async method + * returns immediately without caring if the message was properly published or not. + * + * @param partitionKey The partition to publish the messages on. + * @param messages A Collection of messages to publish. + * @throws Exception + */ + public void sendAsync(String partitionKey, Collection<String> messages) throws Exception; + + /** + * Publishes a message using the parameters from the constructor. The Async method returns immediately without + * caring if the message was properly published or not. + * + * @param message The String message to publish. + * @throws Exception + */ + public void sendAsync(String message) throws Exception; + + /** + * Publishes a message using the parameters from the constructor. The Async method returns immediately without + * caring if the message was properly published or not. + * + * @param messages A Collection of messages to publish. + * @throws Exception + */ + public void sendAsync(Collection<String> messages) throws Exception; + + /** + * Closes the publisher. + */ + public void close() throws Exception; + + +} diff --git a/event-client-api/src/main/java/org/onap/aai/event/api/MessageWithOffset.java b/event-client-api/src/main/java/org/onap/aai/event/api/MessageWithOffset.java new file mode 100644 index 0000000..54972c9 --- /dev/null +++ b/event-client-api/src/main/java/org/onap/aai/event/api/MessageWithOffset.java @@ -0,0 +1,41 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017 European Software Marketing Ltd. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ +package org.onap.aai.event.api; + +public class MessageWithOffset { + private final long offset; + private final String message; + + public MessageWithOffset(long offset, String message) { + this.offset = offset; + this.message = message; + } + + public long getOffset() { + return offset; + } + + public String getMessage() { + return message; + } +} |