Installation

Environment

Message Router is developed using Kafka, Zookeeper and Java. AJSC framework is used to create the REST service and Docker was used to package the service.

Steps

Message Router has 3 docker containers. Dmaap_container, kafka_container and zookeeper_container. Zookeeper runs on 172.18.0.2, kafka runs on 172.18.0.3 and dmaap on 172.18.0.4.

  1. Clone message service repo

git clone http://gerrit.onap.org/r/dmaap/messagerouter/messageservice
  1. copy messageservice/bundleconfig-local/etc/appprops/MsgRtrApi.properties to /var/tmp directory

  2. In /var/tmp/MsgRtrApi.properties, change value of below variables as shown below:

config.zk.servers=172.18.0.2 (Change as per where ZooKeepeer is deployed)
kafka.metadata.broker.list=172.18.0.3:9092 (Change as per where Kafka is deployed)
  1. Install docker and docker-compose

  2. Go to messageservice/src/main/resources/docker-compose and run:

  docker-compose up  # add -d argument to start process as a daemon (background process)


This should start 3 containers.
  1. Run docker ps. It should show 3 containers.

    image0

Testing

  • For publishing, create a sample.txt file with some content in the directory where you will run below rest api. Run below rest api:

curl -H "Content-Type:text/plain" -X POST -d @sample.txt http://172.18.0.4:3904/events/TestTopic1
  • For subscribing, run below rest api:

curl -H "Content-Type:text/plain" -XGET http://172.18.0.4:3904/events/TestTopic1/CG1/C1?timeout=1000


Note: You will only receive messages which have been published after
you have subscribed to a topic.

Steps for local development and test

On Intel dev machine, in terminal (> indicates prompt) :

  1. Build kafka11aaf

> git clone https://gerrit.onap.org/r/dmaap/kafka
> cd kafka11aaf
> mvn clean install -Pdocker
  1. Build messageservice

> git clone https://gerrit.onap.org/r/dmaap/messagerouter/messageservice
(Note: anonymous http, can't push changes)
> cd messageservice
> mvn clean install -Pdocker
  1. Run tests

 > cp bundleconfig-local/etc/appprops/MsgRtrApi.properties /var/tmp/


    - edit /var/tmp/MsgRtrApi.properties
        config.zk.servers=zookeeper
        kafka.metadata.broker.list=kafka:9092

        - docker-compose network maps service name(zookeeper, kafka) to IP

    - set docker preferences/file sharing to access /var/tmp

> cd src/main/resources/docker-compose

- edit docker-compose.yml
    - remove "nexus3.onap.org:10001/" from kafka and dmaap image names to
        use local images

> docker-compose up -d
- create sample.txt file (as above)(content of file not important)

> curl -H "Content-Type:text/plain" -X POST -d @sample.txt http://localhost:3904/events/TestTopic1

On Arm:

  1. Build kafka11aaf

 > git clone https://gerrit.onap.org/r/dmaap/kafka

> cd kafka11aaf

> mvn clean install -Pdocker  -Ddocker.pull.registry=docker.io
    - ensure we pull Arm version of base image
  1. Build messageservice

> git clone https://gerrit.onap.org/r/dmaap/messagerouter/messageservice
    - anonymous http, can't push changes

> cd messageservice

> mvn clean install -Pdocker  -Ddocker.pull.registry=docker.io
    - ensure we pull Arm version of base image
  1. Run tests

> cp bundleconfig-local/etc/appprops/MsgRtrApi.properties /var/tmp/

    - edit /var/tmp/MsgRtrApi.properties
        config.zk.servers=zookeeper
        kafka.metadata.broker.list=kafka:9092

        - docker-compose network maps service name(zookeeper, kafka) to IP

    - set docker preferences/file sharing to access /var/tmp

> cd src/main/resources/docker-compose
- edit docker-compose.yml

    - remove "nexus3.onap.org:10001/" from from kafka and dmaap image names to
        use local images

    - replace 'nexus3.onap.org:10001/onap/dmaap/zookeeper:1.0.0' with
        multi-platform 'zookeeper'

> docker-compose up -d

- create sample.txt file (as above)(content of file not important)

> curl -H "Content-Type:text/plain" -X POST -d @sample.txt http://localhost:3904/events/TestTopic1