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.
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
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
Statistics
- Stars: 5
- Watchers: 11
- Forks: 12
- Open Issues: 9
- Releases: 17
Topics
Metadata Files
README.md
ARGO Messaging
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 tozookeeper_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 namecertificate- /path/to/tls/certificatecertificate_key- /path/to/cert/leycertificate_authorities_dir- dir containing CAslog_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 serverpush_server_host- push1.grnet.grpush_server_port- 443verify_push_server- (true|false) mutual TLS for the push serverpush_worker_token- token for the active push worker userlog_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-goinstall the go gRPC package.
go get -u google.golang.org/grpcInside
push/grpccompile.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
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
- Repositories: 75
- Profile: https://github.com/ARGOeu
Α 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 | 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
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
- Homepage: https://github.com/argoeu/argo-messaging
- Documentation: https://pkg.go.dev/github.com/argoeu/argo-messaging#section-documentation
- License: Apache-2.0
-
Latest release: v1.7.0
published 9 months ago
Rankings
proxy.golang.org: github.com/ARGOeu/argo-messaging
- Homepage: https://github.com/ARGOeu/argo-messaging
- Documentation: https://pkg.go.dev/github.com/ARGOeu/argo-messaging#section-documentation
- License: Apache-2.0
-
Latest release: v1.7.0
published 9 months ago
Rankings
Dependencies
- 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
- 115 dependencies
- 1024 dependencies
- @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
- 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
