httpmsgbus Package

Abstract
Abstract data objects are frequently transferred between a central computer (server) and one or more other computers (clients). The httpmsgbus (HMB) facilitates the transfer of these objects, functioning as a messaging service which runs over HTTP. These may be SeisComP data model items, or any other content. Messages sent by one client can be received by multiple clients connected to the same bus, using JSON and BSON formats for communication. Clients may limit what objects they wish to receive as part of the connection process. A bus may have multiple queues. Order of messages within a queue is preserved. A queue may have multiple topics; topic name is simply an attribute of a message. A receiving client subscribes to one or more queues and tells which topics it is interested in. Each message within a queue has a sequence number, so it is possible to resume connection without data loss, provided that the needed messages are still in the queue. A client can also select messages based on start- and end-time, and filter messages using a subset of MongoDB query language. HMB supports out-of-order messages by letting a sending client specify the sequence number when sending messages. Messages are received in order; a receiving client may ignore out-of-order messages or wait for missing messages until a timeout.
httpmsgbus can be used as a standalone program or as an add-on to SeisComP 3 [1]; the code can be copied to SC3 source tree and compiled together with the rest of the SC3 using CMake or installed separately using the install.sh script. Go compiler [2] is required to compile the code; other requirements include Libpcre (pcre-devel, libpcre3-dev or similar Linux package), and Mongo DB for persistent storage.
Source code is freely available for download; its use is governed by the GNU General Public License, version 3.

[1] http://www.seiscomp3.org/
[2] https://golang.org/dl/
Cite as
Heinloo, Andres (2016): The httpmsgbus general-purpose HTTP-based message bus. GFZ Data Services. doi:10.5880/GFZ.2.4.2016.001
Bibliographic metadata
DataCite metadata
Concept
A SeisComP system operating on a server S, is able to send messages, such as SeisComP event parameters, to one or more clients C1, C2, C3 over HTTP. Because it can run on port 80, no special firewall access is required. The server runs httpmsgbus, and the client hosts each run a client application, such as receive_json.py which may filter to retain only messages of interest to that client. By modifying the client application, messages can be directed to a third-party application on the client system. Concept of httpmsgbus
Documentation
Further information /
Support
Contact the developers at GEOFON. Our time is limited but we will try to help get you started with the software, or fix the inevitable bugs.
Licence
GNU General Public License, version 3.
httpmsgbus is Copyright © 2015–2016 Helmholtz-Zentrum Potsdam - Deutsches GeoForschungsZentrum GFZ (the GEOFON team).
Terms of Use
You use httpmsgbus at your own site, and/or use a httpmsgbus implementation, entirely at your own risk.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Download
Additional clients
Andres Heinloo has prepared additional HMB clients (in Python) to help you get started: GFZ GitLab repository .
httpmsgbus users
A partial list of httpmsgbus adopters. Thank you for your support of our product! Let us know if you would like to be included on this list.