Skip to content

The ARGO Messaging API is implemented as a Publish/Subscribe Service. Instead of focusing on a single Messaging API specification for handling the logic of publishing/subscribing to the broker network the API focuses on creating nodes of Publishers and Subscribers as a Service.

License

Notifications You must be signed in to change notification settings

kkoumantaros/argo-messaging

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

ARGO Messaging

⚠️ Warning ⚠️

These installation instructions are meant for running the service for demo purposes. If you want to operate the service for anything else other than a simple demo, please implement a deployment model that meets your requirements.

In order to build, test and run the service, recent versions of the docker-engine (>=1.12) and the docker-compose (>= 1.8.0) are required. Step 1 refers to the docker installation on Ubuntu 16.04.1, please adopt accordingly your Linux distribution or OS.

Install docker from dockerproject.org (Ubuntu 16.04.1)

$ sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
$ sudo apt-cache policy docker-engine
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
$ sudo apt-get install docker-engine

We advise you to follow the steps described in docker manual. For Ubuntu:

Note: Don't forget to login logout before running the docker as a non root user. This ensures your user is running with the correct permissions.

Install docker-compose

We are using version of the Compose file format. To install the latest docker-compose, follow the guidelines here: https://github.com/docker/compose/releases

Clone the argo-messaging repository

$ git clone https://github.com/ARGOeu/argo-messaging

Get certificates (skip this step if you already have certificates)

The ARGO Messaging services requires certificates in order to operates. The easiest way is to get certificates from letsencrypt. You can follow the instructions from the letsencrypt website or use the docker letsencrypt docker image. One caveat of this approach is that the certificate files end up in the etc/live directory (see below) and will be owned by the root user.

$ mkdir -p ${HOME}/letsencrypt/{etc,var}
$ docker run -it --rm -p 443:443 -p 80:80 --name certbot \
    -v "$HOME/letsencrypt/etc:/etc/letsencrypt" \
    -v "$HOME/letsencrypt/var:/var/lib/letsencrypt" \
    quay.io/letsencrypt/letsencrypt:latest certonly
$ cd argo-messaging
# Comment: Please change owneship of ${HOME}/letsencrypt to your user
$ cp ${HOME}/letsencrypt/etc/live/*/fullchain.pem host.crt
$ sudo cp ${HOME}/letsencrypt/etc/live/*/privkey.pem host.key

Edit the default configuration file (config.json)

In the argo-messaging directory, edit config.json:

{
"bind_ip":"",
"port":8080,
-  "zookeeper_hosts":["localhost"],
-  "store_host":"localhost",
+  "zookeeper_hosts":["zookeeper"],
+  "store_host":"mongo",
"store_db":"argo_msg",
-  "certificate":"/etc/pki/tls/certs/localhost.crt",
-  "certificate_key":"/etc/pki/tls/private/localhost.key",
+  "certificate":"./host.crt",
+  "certificate_key":"./host.key",
"service_token":"CHANGE-THIS-TO-A-LONG-STRING"
}

Note: Make sure that you change the service_token to a long string.

Edit docker-compose.yml

In the argo-messaging directory, edit docker-compose.yml and add the public IP address of your host to the KAFKA_ADVERTISED_HOST_NAME key.

Run the tests

$ docker run --env hostUID=`id -u`:`id -g` --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.7 make go-test

Build the service

$ docker run --env hostUID=`id -u`:`id -g` --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.7 make go-build-linux-static

Start the service

$ docker-compose build
$ docker-compose up -d

Test that the service is running

$ curl https://<HOSTNAME>/v1/projects?key=<YOUR_SERVICE_TOKEN>

Note: Change <HOSTNAME> to the hostname of your host and <SERVICE_TOKEN> to the service token that you have added in config.json. You should get an empty json response:

{}

Stop the service

$ docker-compose stop

Congratulations!

Please visit http://argoeu.github.io/messaging/v1/ to learn how to use the service.

Credits

The ARGO Messaging Service is developed by GRNET

The work represented by this software was partially funded by the EGI-ENGAGE project through the European Union (EU) Horizon 2020 program under Grant number 654142.

About

The ARGO Messaging API is implemented as a Publish/Subscribe Service. Instead of focusing on a single Messaging API specification for handling the logic of publishing/subscribing to the broker network the API focuses on creating nodes of Publishers and Subscribers as a Service.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.5%
  • Makefile 0.5%