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 | |
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')
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(""))); + } + +} |