ICS sample producer and consumer

Sample Java producer and consumer that integrates with ICS callbacks.

Issue-ID: NONRTRIC-965
Change-Id: I7319b46802444af130a3bd0d5c6bdd12f97c9904
Signed-off-by: lapentafd <francesco.lapenta@est.tech>
diff --git a/sample-services/ics-producer-consumer/docker-compose.yaml b/sample-services/ics-producer-consumer/docker-compose.yaml
new file mode 100644
index 0000000..d9239bc
--- /dev/null
+++ b/sample-services/ics-producer-consumer/docker-compose.yaml
@@ -0,0 +1,83 @@
+#  ========================LICENSE_START=================================

+#  O-RAN-SC

+#

+#  Copyright (C) 2024: OpenInfra Foundation Europe

+#  ========================================================================

+#  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=================================================

+

+version: '2'

+

+networks:

+  my-network:

+    name: kafka

+    driver: bridge

+

+services:

+  kafka-zkless:

+    container_name: kafka-zkless

+    image: quay.io/strimzi/kafka:latest-kafka-2.8.1-amd64

+    command:

+      [

+        "sh",

+        "-c",

+        "export CLUSTER_ID=$$(bin/kafka-storage.sh random-uuid) && bin/kafka-storage.sh format -t $$CLUSTER_ID -c config/kraft/server.properties && bin/kafka-server-start.sh config/kraft/server.properties --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override listener.security.protocol.map=$${KAFKA_LISTENER_SECURITY_PROTOCOL_MAP} --override listeners=$${KAFKA_LISTENERS}",

+      ]

+    ports:

+      - "9092:9092"

+    environment:

+      LOG_DIR: "/tmp/logs"

+      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT

+      KAFKA_LISTENERS: PLAINTEXT://:29092,PLAINTEXT_HOST://:9092,CONTROLLER://:9093

+      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-zkless:29092,PLAINTEXT_HOST://kafka-zkless:9092

+    tty: true

+    stdin_open: true

+    networks:

+      - my-network

+

+  informationcoordinator:

+    image: nexus3.o-ran-sc.org:10001/o-ran-sc/nonrtric-plt-informationcoordinatorservice:1.6.0

+    container_name: informationcoordinatorservice

+    ports:

+      - "8083:8083"

+    volumes:

+      - ./application.yaml:/opt/app/information-coordinator-service/config/application.yaml

+    networks:

+      - my-network

+

+  kafka-producer:

+    image: o-ran-sc/nonrtric-sample-icsproducer:latest

+    container_name: kafka-producer

+    environment:

+      - KAFKA_SERVERS=kafka-zkless:9092

+    ports:

+      - "8080:8080"

+    networks:

+      - my-network

+

+  kafka-consumer:

+    image: o-ran-sc/nonrtric-sample-icsconsumer:latest

+    container_name: kafka-consumer

+    environment:

+      - KAFKA_SERVERS=kafka-zkless:9092

+    ports:

+      - "8081:8081"

+    networks:

+      - my-network

+

+  curl-client:

+    image: curlimages/curl:latest

+    container_name: curl-client

+    command: ["tail", "-f", "/dev/null"]

+    networks:

+      - my-network