summaryrefslogtreecommitdiffstats
path: root/event-client-api
diff options
context:
space:
mode:
authorGilding, Joyce (jg640n) <Joyce.Gilding@amdocs.com>2018-01-29 15:00:04 +0000
committerGilding, Joyce (jg640n) <Joyce.Gilding@amdocs.com>2018-01-30 10:24:18 +0000
commit4150ee34ae503c83734aca7e62ca9911b354c881 (patch)
tree6598a1d16483eb480664b8862c86ba801af6d661 /event-client-api
parent4e6e8b2714f3e5fe6d6dc064d9d73275c5ee5437 (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')
-rw-r--r--event-client-api/pom.xml9
-rw-r--r--event-client-api/src/main/java/org/onap/aai/event/api/EventConsumer.java67
-rw-r--r--event-client-api/src/main/java/org/onap/aai/event/api/EventPublisher.java111
-rw-r--r--event-client-api/src/main/java/org/onap/aai/event/api/MessageWithOffset.java41
-rw-r--r--event-client-api/src/test/java/org/onap/aai/event/api/TestMessageWithOffset.java40
5 files changed, 268 insertions, 0 deletions
diff --git a/event-client-api/pom.xml b/event-client-api/pom.xml
new file mode 100644
index 0000000..25ddcc8
--- /dev/null
+++ b/event-client-api/pom.xml
@@ -0,0 +1,9 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.onap.aai.event</groupId>
+ <artifactId>event-client-service</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>event-client-api</artifactId>
+</project> \ No newline at end of file
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;
+ }
+}
diff --git a/event-client-api/src/test/java/org/onap/aai/event/api/TestMessageWithOffset.java b/event-client-api/src/test/java/org/onap/aai/event/api/TestMessageWithOffset.java
new file mode 100644
index 0000000..6565c73
--- /dev/null
+++ b/event-client-api/src/test/java/org/onap/aai/event/api/TestMessageWithOffset.java
@@ -0,0 +1,40 @@
+/**
+ * ============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 static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+public class TestMessageWithOffset {
+
+ @Test
+ public void testConstructor() {
+ MessageWithOffset msg = new MessageWithOffset(0L, "");
+ assertThat(msg.getOffset(), is(equalTo(0L)));
+ assertThat(msg.getMessage(), is(equalTo("")));
+ }
+
+}