Skip to main content

Service introduction and configuration

Introduction​

The ARGO Messaging Service API implements the Google PubSub specification and thus supports HTTP RPC-style methods in the form of:

https://messaging.argo.grnet.gr/api/projects/METHOD

All methods must be called using HTTPS. Arguments can be passed as GET or POST params, or a mix. The response contains a 200 OK for a successful request and a JSON object in case of an error. For failure results, the error property will contain a short machine-readable error code. In the case of problematic calls, during handling user’s request the API responds using a predefined schema (described in chapter Errors), that contains a short machine-readable warning code, an error code and an error description (or list of them, in the case of multiple errors).

Each user is authenticated by adding the header parameter x-api-key in each API request

Configuration file: config.json​

The first step for using the messaging API is to edit the main configuration file.

The ARGO Messaging Service main configuration file is config.json. An example configuration is listed below:

{
"bind_ip":"",
"port":8080,
"zookeeper_hosts":["localhost"],
"kafka_znode":"",
"store_host":"localhost",
"store_db":"argo_msg",
"certificate":"/etc/pki/tls/certs/localhost.crt",
"certificate_key":"/etc/pki/tls/private/localhost.key",
"per_resource_auth":true,
"service_token":"S0M3T0K3N",
"log_level":"INFO",
"log_facilities": ["syslog", "console"]
}

Explanation of config parameters:​

ParameterDescription
bind_ipthe ip address to listen to.
portThe port where the API will listen to
zookeeper_hostsList of zookeeper instances that are used to sync kafka
kafka_znodeThe znode under which Kafka writes its data on Zookeeper. Default is "" meaning the root node
store_hostAddress:port of the datastore server
store_dbDatabase name used on the datastore server
certificatepath to the node's TLS certificate file
certificate_keypath to the certificate's private key
per_resource_authenable authorization per resource (topic/subscription)
service_token(optional) If set, enables full service-wide access to the api to initialize projects,users and resources
log_levelset the desired log level (defaults to "INFO")
log_facilitieslogging output, if left empty, it defaults to console)

Location of config.json: API will look first for config.json locally in the folder where the executable runs and then in the /etc/argo-messaging/ location.

Command line parameters​

Apart from configuration file, argo-messaging service accepts configuration parameters in the command line. The list of the available command line parameters is displayed if the user issues

./argo-messaging-service --help

The available command line parameters are listed as follows:

--bind-ip string           ip address to listen to (default "localhost")
--certificate string certificate file *.crt (default "/etc/pki/tls/certs/localhost.crt")
--certificate-key string certificate key file *.key (default "/etc/pki/tls/private/localhost.key")
--config-dir string directory path to an alternative json config file
--kafka-znode string kafka zookeeper node name
--log-level string set the desired log level
--per-resource-auth enable per resource authentication (default true)
--port int port number to listen to (default 8080)
--service-key string service token definition for immediate full api access
--store-db string datastore (mongodb) database name (default "argo_msg")
--store-host string datastore (mongodb) host (default "localhost")
--zookeeper-hosts value list of zookeeper hosts to connect to (default [localhost])

User can optionally specify an alternative configuration file directory with the use of the --config-dir parameter For example:

./argo-messaging-service --config-dir=/root/alternative/config/

The /root/alternative/config/config.json must exist