argo-messaging

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.

https://github.com/argoeu/argo-messaging

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.8%) to scientific vocabulary

Keywords

ams argo-messaging
Last synced: 6 months ago · JSON representation ·

Repository

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.

Basic Info
  • Host: GitHub
  • Owner: ARGOeu
  • License: apache-2.0
  • Language: Go
  • Default Branch: master
  • Homepage:
  • Size: 21.5 MB
Statistics
  • Stars: 5
  • Watchers: 11
  • Forks: 12
  • Open Issues: 9
  • Releases: 17
Topics
ams argo-messaging
Created about 10 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation Codemeta

README.md

ARGO Messaging

Build Status Build Status

The ARGO Messaging Service is a Publish/Subscribe Service, which implements the Google PubSub protocol. 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. It provides an HTTP API that enables Users/Systems to implement message oriented services using the Publish/Subscribe Model over plain HTTP. In the Publish/Subscribe paradigm, Publishers are users/systems that can send messages to named-channels called Topics. Subscribers are users/systems that create Subscriptions to specific topics and receive messages.

Prerequisites

Build Requirements

  • Golang 1.21

Datastore Requirements

  • The service has been tested with mongodb from version 6.0.14.

Broker requirements

  • Kafka 2.2.1
  • Zookeeper 3.4.5

Push Server

In order to support push enabled subscriptions AMS relies on an external service that handles the actual pushing of messages, while AMS holds the configuration for the subscriptions.You can create push enabled subscriptions even when the push-server isn't available, they will be picked up automatically when the push-server is up and running. - Push server

Configuration

Configuration Location

Configuration for the service takes place inside a config.json file, that resides in two possible locations:

1) Same folder as the binary

2) /etc/argo-messaging/config.json

Configuration values

  • port - port the service will bind to
  • zookeeper_hosts - list of zookeeper hosts, e.g. [zoo1:2181,zoo2:2181,zoo3:2181]
  • store_host - store host, e.g. 'mongo1:27017,mongo2:27017,mongo3:27017'
  • store_db - mongo db database name
  • certificate - /path/to/tls/certificate
  • certificate_key - /path/to/cert/ley
  • certificate_authorities_dir - dir containing CAs
  • log_level - DEBUG,INFO,WARNING, ERROR or FATAL
  • push_enabled - (true|false) whether or not the service will support push enabled subscriptions
  • push_tls_enabled - (true|false), whether or not the service will communicate over TLS with the push server
  • push_server_host - push1.grnet.gr
  • push_server_port - 443
  • verify_push_server - (true|false) mutual TLS for the push server
  • push_worker_token - token for the active push worker user
  • log_facilities - ["syslog", "console"]
  • auth_option - (key|header|both), where should the service look for the access token.
  • proxy_hostname - The FQDN of any proxy or load balancer that might serve request in place of the AMS

Run the tests

Inside the project's root directory issue the command:

bash go test ./...

For the db store integration test suite, you can issue the command: bash go test ./... -tags integration

Build & Run the service

In order to build the service, inside the AMS repo issue the command: bash go build In order to run the service, bash ./argo-messaging

X509 Authentication

Although AMS doesn't support direct authentication through an x509 certificate, you can use the argo-authentication-service to map an x509 certificate to an AMS key. The service will also validate the certificate. The ams-library will effortlessly hide this complexity if you decide to use it in order to access AMS.

Managing the protocol buffers and gRPC definitions

In order to modify any .proto file you will need the following

  • Read on how to install the protoc compiler on your platform here.

  • Install the go plugin. go get -u github.com/golang/protobuf/protoc-gen-go

  • install the go gRPC package. go get -u google.golang.org/grpc

  • Inside push/grpc compile. protoc -I proto/ proto/ams.proto --go_out=plugins=grpc:proto

Helpful utilities

Inside the tools folder you can find various scripts that can help you perform common tasks OR help you get started with interacting with AMS.

There is also a handy python library for interacting with AMS.

SQAaaS badge

SQAaaS badge

Credits

The ARGO Messaging Service is developed by GRNET

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

Owner

  • Name: ARGOeu
  • Login: ARGOeu
  • Kind: organization

Α team working with the latest technologies about accounting, monitoring, messaging and eSeal Capabilities

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Argo Messaging Service 
message: The ARGO Messaging Service is a Publish/Subscribe Service, which implements the Google PubSub protocol. It provides an HTTP API that enables Users/Systems to implement message oriented service using the Publish/Subscribe Model over plain HTTP.
type: software
authors:
  - given-names: Kostas
    family-names: Kagkelidis
    email: kaggis@admin.grnet.gr
    affiliation: GRNET S.A.
  - given-names: Themis
    family-names: Zamani
    email: themis@admin.grnet.gr
    affiliation: GRNET S.A.
  - given-names: Agelos
    family-names: Tsalapatis
    email: agelostsal@admin.grnet.gr
    affiliation: GRNET S.A.
  - given-names: Kostas
    family-names: Koumantaros
    email: kkoum@admin.grnet.gr
    affiliation: GRNET S.A.
  - given-names: Anastasios 
    family-names: Lisgaras
  - given-names: Kostas 
    family-names: Evangelou

  

CodeMeta (codemeta.json)

{
  "@context": "https://doi.org/10.5063/schema/codemeta-2.0",
  "@type": "SoftwareSourceCode",
  "license": "https://spdx.org/licenses/Apache-2.0.html",
  "codeRepository": "https://github.com/ARGOeu/argo-messaging.git",
  "dateCreated": "2015-12-20",
  "datePublished": "2016-03-24",
  "dateModified": "2023-05-23",
  "downloadUrl": "https://github.com/ARGOeu/argo-messaging/archive/refs/heads/master.zip",
  "issueTracker": "https://github.com/ARGOeu/argo-messaging/issues",
  "name": "Argo Messaging Service",
  "version": "1.5.0",
  "description": "The ARGO Messaging Service is a Publish/Subscribe Service, which implements the Google PubSub protocol. 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. It provides an HTTP API that enables Users/Systems to implement message oriented services using the Publish/Subscribe Model over plain HTTP. In the Publish/Subscribe paradigm, Publishers are users/systems that can send messages to named-channels called Topics. Subscribers are users/systems that create Subscriptions to specific topics and receive messages.",
  "applicationCategory": "messaging service",
  "releaseNotes": "Features\nAM-311 Upgrade to go1.19\nBug/Fixes\nUpdate docusaurus dependencies\nAM-306 Static analysis assessment fixes\nUpdate Postman CI/CD collection to use x-api-key header\nDocumentation\n\nUpdate README.md\nCreate CITATION.cff\nCreate CONTRIBUTING.md\nCreate CODE_OF_CONDUCT.md\nProcess for adding a new mattermost integration",
  "developmentStatus": "active",
  "isPartOf": "https://eosc-portal.eu",
  "funder": {
    "@type": "Organization",
    "name": "GRNET S.A.  National Infrastructures for Research and Technology"
  },
  "keywords": [
    "messaging",
    "pub/sub",
    "golang",
    "kafka"
  ],
  "programmingLanguage": [
    "Golang",
    "Python",
    "Java"
  ],
  "author": [
    {
      "@type": "Person",
      "@id": "https://orcid.org/0000-0003-1148-1738",
      "givenName": "Themis",
      "familyName": "Zamani",
      "email": "themis@admin.grnet.gr",
      "affiliation": {
        "@type": "Organization",
        "name": "GRNET S.A"
      }
    },
    {
      "@type": "Person",
      "givenName": "Konstantinos",
      "familyName": "Kagkelidis",
      "email": "kaggis@admin.grnet.gr",
      "affiliation": {
        "@type": "Organization",
        "name": "GRNET S.A "
      }
    },
    {
      "@type": "Person",
      "givenName": "Agelos ",
      "familyName": "Tsalapatis",
      "email": "agelostsal@admin.grnet.gr",
      "affiliation": {
        "@type": "Organization",
        "name": "GRNET S.A"
      }
    },
    {
      "@type": "Person",
      "givenName": "Kostas",
      "familyName": "Koumantaros",
      "email": "kkoum@admin.grnet.gr",
      "affiliation": {
        "@type": "Organization",
        "name": "GRNET S.A"
      }
    }
  ],
  "contributor": [
    {
      "@type": "Person",
      "givenName": "Konstantinos",
      "familyName": "Evangelou",
      "email": "kevangel@admin.grnet.gr",
      "affiliation": {
        "@type": "Organization",
        "name": "GRNET S.A"
      }
    }
  ]
}

GitHub Events

Total
  • Release event: 1
  • Delete event: 35
  • Issue comment event: 9
  • Push event: 28
  • Pull request review event: 1
  • Pull request event: 42
  • Fork event: 1
  • Create event: 11
Last Year
  • Release event: 1
  • Delete event: 35
  • Issue comment event: 9
  • Push event: 28
  • Pull request review event: 1
  • Pull request event: 42
  • Fork event: 1
  • Create event: 11

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 414
  • Total Committers: 11
  • Avg Commits per committer: 37.636
  • Development Distribution Score (DDS): 0.606
Top Committers
Name Email Commits
agelostsal a****l@g****m 163
Konstantinos Kagkelidis k****s@g****m 132
Themis Zamani t****i@g****m 73
Kostas Evangelou k****l@a****r 16
Kostas Koumantaros k****s@u****m 10
Christos Kanellopoulos s****t@g****m 7
Adrian Coveney t****y@u****m 4
Paschalis Korosoglou p****o@g****r 3
Tas-sos t****n@y****r 3
kkoumantaros k****s@g****m 2
kevangel79 5****9@u****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 2
  • Total pull requests: 136
  • Average time to close issues: N/A
  • Average time to close pull requests: 15 days
  • Total issue authors: 1
  • Total pull request authors: 6
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.35
  • Merged pull requests: 103
  • Bot issues: 0
  • Bot pull requests: 21
Past Year
  • Issues: 0
  • Pull requests: 18
  • Average time to close issues: N/A
  • Average time to close pull requests: 4 days
  • Issue authors: 0
  • Pull request authors: 4
  • Average comments per issue: 0
  • Average comments per pull request: 0.06
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 8
Top Authors
Issue Authors
  • brucellino (2)
Pull Request Authors
  • kaggis (72)
  • agelostsal (27)
  • dependabot[bot] (24)
  • themiszamani (18)
  • brucellino (1)
  • kkoumantaros (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (24) javascript (15) go (8)

Packages

  • Total packages: 2
  • Total downloads: unknown
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 12
proxy.golang.org: github.com/argoeu/argo-messaging
  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 3.8%
Stargazers count: 6.5%
Average: 6.7%
Dependent packages count: 7.0%
Dependent repos count: 9.3%
Last synced: 6 months ago
proxy.golang.org: github.com/ARGOeu/argo-messaging
  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Forks count: 3.8%
Stargazers count: 6.5%
Average: 6.7%
Dependent packages count: 7.0%
Dependent repos count: 9.3%
Last synced: 6 months ago

Dependencies

go.mod go
  • github.com/BurntSushi/toml v0.3.1
  • github.com/DataDog/zstd v1.4.0
  • github.com/Shopify/sarama v1.22.1
  • github.com/golang/protobuf v1.4.2
  • github.com/gorilla/context v0.0.0-20150820051245-1c83b3eabd45
  • github.com/gorilla/handlers v0.0.0-20160816184729-a5775781a543
  • github.com/gorilla/mux v0.0.0-20150908165839-49c024275504
  • github.com/linkedin/goavro v2.1.0+incompatible
  • github.com/onsi/ginkgo v1.13.0
  • github.com/samuel/go-zookeeper v0.0.0-20160616024954-e64db453f351
  • github.com/sirupsen/logrus v1.0.6-0.20180625052543-e3292c4c4d7f
  • github.com/spf13/cast v1.3.0
  • github.com/spf13/pflag v1.0.2
  • github.com/spf13/viper v1.2.2-0.20181107110859-ae103d7e593e
  • github.com/stretchr/testify v1.3.0
  • github.com/twinj/uuid v0.0.0-20150629100731-70cac2bcd273
  • github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
  • github.com/xeipuuv/gojsonschema v1.2.0
  • google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb
  • google.golang.org/grpc v1.17.0
  • gopkg.in/airbrake/gobrake.v2 v2.0.9
  • gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2
  • gopkg.in/linkedin/goavro.v1 v1.0.5
  • gopkg.in/mgo.v2 v2.0.0-20160818020120-3f83fa500528
go.sum go
  • 115 dependencies
website/package-lock.json npm
  • 1024 dependencies
website/package.json npm
  • @docusaurus/module-type-aliases 2.0.1 development
  • @docusaurus/core 2.0.1
  • @docusaurus/preset-classic 2.0.1
  • @easyops-cn/docusaurus-search-local ^0.31.0
  • @mdx-js/react ^1.6.22
  • clsx ^1.2.1
  • prism-react-renderer ^1.3.5
  • react ^17.0.2
  • react-dom ^17.0.2
tools/requirements.txt pypi
  • argo-ams-library >=0.5.9
  • avro ==1.11.0
  • kafka-python >=1.4.2
  • kazoo ==2.8
  • pymongo >=3.6.1
  • requests >=2.20