Demo scripts send_json.py and receive_json.py are included in the distribution.
Start httpmsgbus without arguments; in this case persistent storage is not used. Busses and queues are created on demand when first used.
In another shell, call:
$ python send_json.py notice "something happened"
Now the bus and queue have been created, so you can subscribe to the queue by calling:
$ python receive_json.py
Any messages sent by send_json.py will now be received by receive_json.py.
JSON objects can be easily used in Javascript, for example a Javascript client may connect to HMB and display alerts on a web page.
When the httpmsgbus process in the above example is killed, all messages will be lost. It is possible to enable persistent storage using the -D command-line option, in which case the messages will be saved and available after a restart.
To save messages in files in a directory “filedb”, use:
$ httpmsgbus -D filedb://filedb
To save messages in a MongoDB database, use:
$ httpmsgbus -D mongodb://localhost:27017
In the latter case, you can see your messages using the MongoDB shell:
$ mongo test
MongoDB shell version: 3.0.7
connecting to: test
> db.SYSTEM_ALERT.findOne()
{
"_id" : ObjectId("5702e2e22ba8707f01375106"),
"type" : "SYSTEM_ALERT",
"queue" : "SYSTEM_ALERT",
"sender" : "j5WknMw9h1wQUovw",
"seq" : NumberLong(0),
"data" : {
"text" : "something happened",
"level" : "notice"
}
}
The BSON format can be used to embed binary data without space overhead. For example, the “eventpush” program (available in the “hmb-clients” repository) uses HMB to send messages containing compressed XML data. Such messages can be received using the “qmlreceiver” program.
In SeisComP 3, HMB is disabled by default and can be enabled by adding the following options to ~/seiscomp3/etc/kernel.ini:
hmb.enable = true
hmb.port = 8000
Thereafter HMB can be configured with “scconfig” and started like any other SC3 module:
$ seiscomp start httpmsgbus
Modules like scimport can send messages to HMB instead of the Spread messaging server, for example:
$ echo "msggroups = AMPLITUDE,PICK,LOCATION,MAGNITUDE,EVENT,QC,INVENTORY,CONFIG" >scimport.cfg
$ seiscomp exec scimport --no-filter -o hmb://localhost:8000/test --console 1 -v
Likewise, messages can be received from HMB instead of Spread:
$ seiscomp exec scmm -H hmb://localhost:8000/test --console 1 -v
The “pick2hmb” program, included in the distribution, can be studied as a C++ example of sending SC3 objects to HMB.
The wavefeed SC3 module can be started to feed waveform data to HMB instead of a local SeedLink server.
$ seiscomp start wavefeed
Now an HMB recordstream can be used:
$ seiscomp exec scrttv -I hmb://localhost:8000/wave