From 4150ee34ae503c83734aca7e62ca9911b354c881 Mon Sep 17 00:00:00 2001 From: "Gilding, Joyce (jg640n)" Date: Mon, 29 Jan 2018 15:00:04 +0000 Subject: Initial code submit for Event Bus Client library Change-Id: If0ff82c669872c734ebe0c72bc022beb96c53d11 Issue-ID: AAI-700 Signed-off-by: Gilding, Joyce (jg640n) --- .../java/org/onap/aai/event/api/EventConsumer.java | 67 +++++++++++++ .../org/onap/aai/event/api/EventPublisher.java | 111 +++++++++++++++++++++ .../org/onap/aai/event/api/MessageWithOffset.java | 41 ++++++++ 3 files changed, 219 insertions(+) create mode 100644 event-client-api/src/main/java/org/onap/aai/event/api/EventConsumer.java create mode 100644 event-client-api/src/main/java/org/onap/aai/event/api/EventPublisher.java create mode 100644 event-client-api/src/main/java/org/onap/aai/event/api/MessageWithOffset.java (limited to 'event-client-api/src/main') 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 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 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 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 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 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 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 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; + } +} -- cgit 1.2.3-korg