psmq-sub(1)

bofc manual pages

psmq-sub(1)



 

NAME

psmq-sub - helper tool to listen to subscribed messages over psmq.  

SYNOPSIS

psmq-sub [ -h | -v ]
psmq-sub [<-n mqueue-name>] <-b name> <-t topic> [<-t topic>] [-o file]  

DESCRIPTION

-h
Prints short help and exits
-v
Prints version information and exits
-n mqueue-name
psmq-sub will create and use to communicate with broker. This argument is optional and by default /psmq-sub will be used. If you want to use custom mqueue-name, then this argument must be the first one you pass.
-b name
mqueue name of the broker you want to use for communication. This options is mandatory and must be passed after (if set) -n argument and before -t.
-t topic
topic you want to subscribe to. At least one topic must be passed. You can subscribe to as many topics as you want by passing multiple -t options.
-o path
Path to a file, where logs from incoming messages shall be stored. If file cannot be opened, program will refuse to start. Optional argument, if not passed, messages will be printed to stdout.

Data will be printed in two ways depending on type of data received. When received data is simple ascii string, payload will be printed in the same line as info, thus one line per received message will be received. When data contains non-printable character, output will be hexdump like.

Line is printed in format:
p:n l:llll  topic  payload

p:n
is a priority number
l:llll
number of bytes in payload, aligned to 4 numbers.
topic
is a topic message was published on
payload
received payload

Check following example to better understand the format. Output is a snippet from a source code, sixth line is printed in binary since it contains utf8 character which encoding contain non-printable charater. Rest of lines are printed in single line as a string.

p:0 l:  37  /msg        switch (psmqd_cfg_init(argc, argv))
p:0 l:   3  /msg        {
p:0 l:   9  /msg        case 0:
p:0 l:  37  /msg                /* no errors in parsing arguments,
p:0 l:  32  /msg                 * continue program execution
p:0 l:  40  /msg
0x0000  09 09 20 2a 20 75 74 66 2d 38 20 61 74 74 61 63  .. * utf-8 attac
0x0010  6b 2c 20 68 65 72 65 20 69 74 20 63 6f 6d 65 73  k, here it comes
0x0020  21 20 c5 82 20 2a 2f 00                          ! .. */.
p:0 l:   9  /msg                break;
p:0 l:   1  /msg
p:0 l:  10  /msg        case -2:
p:0 l:  10  /msg        case -3:
p:0 l:  39  /msg                /* help or version was printed, exit
p:0 l:  30  /msg                 * program without error */
p:0 l:  12  /msg                return 0;
p:0 l:   1  /msg
p:0 l:  10  /msg        default:
p:0 l:  32  /msg                /* error occured when parsing
p:0 l:  23  /msg                 * arguments, die */
p:0 l:  12  /msg                return 1;
p:0 l:   3  /msg        }
fi

Log from different sensors may look like this

[2021-05-23 17:53:59] p:0 l:   3  /can/engine/rpm  50
[2021-05-23 17:53:59] p:0 l:   3  /adc/volt  30
[2021-05-23 17:53:59] p:0 l:   3  /can/room/10/temp  23
 

EXAMPLES

Listen to single topic
psmq-sub -b/brok -t/topic1
Listen on multiple topics, use custom mqueue name
psmq-sub -n/qsubnam -b/brok -t/topic1 -t/topic2/+ -t/topic3/subtopic2/*
Log every topic into file
psmq-sub -b/brok -t/* -o/var/log/psmq-log
 

BUG REPORTING

Please, report all bugs to "Michał Łyszczek <michal.lyszczek@bofc.pl>"  

SEE ALSO

psmqd(1), psmq-pub(1), psmq-sub(1), psmq_cleanup(3), psmq_init(3), psmq_publish(3), psmq_receive(3), psmq_subscribe(3), psmq_timedreceive(3), psmq_timedreceive_ms(3), psmq_unsubscribe(3), psmq_building(7), psmq_overview(7).

bofc.pl

19 May 2021 (v9999)

psmq-sub(1)