mq-send
Sends message to specified queue
Overview
e:mq-send
<e:mq-send name="someQueue"> { "some": "message"} </e:mq-send>
Usage
1. Configure a map of queue aliases to MqTester
implementations via MqPlugin.
2. Use e:mq-send
tag in specification:
<e:mq-send name="someQueue">
{ "some": "message"}
</e:mq-send>
Attributes
attribute | desc | example |
---|---|---|
name |
Key from the map of a queue aliases to MqTester implementations configured in MqPlugin. | Required. Default: -
|
from |
Use content of the specified file as a value instead of the tag body (empty tag can be used) | Optional. Default: -
|
vars |
Comma-separated list of name=value pairs to set as variables | Optional. Default: -
|
varsSeparator |
name=value pairs separator to use in vars attribute |
Optional. Default: ,
|
headers |
Comma-separated name=value list of headers to pass to the MqTester.send method.
Specific implementation of the MqTester may use this list as the message headers.
|
Optional. Default: empty
|
params |
Comma-separated name=value list of parameters to pass to the MqTester.send method.
Specific implementation of the MqTester may use this list to fine-tune sending.
|
Optional. Default: empty
|
formatAs |
Format to use for pretty-print message in report. Supported values: json, xml. | Optional. Default: json
|
collapsable |
Render message in report as a collapsable block. | Optional. Default: false
|
Examples
Specifying message
Message could be specified in the tag body:
Given
When
<e:mq-send name="myQueue">{"date" : "{{now 'yyyy-MM-dd'}}"}</e:mq-send>
will be rendered as:{
"date": "2022-03-12"
} |
Then
{
"date": "2022-03-12"
} |
Or in the file:
Given
When
<e:mq-send name="myQueue" from="/specs/mq/data/message.json"/>
will be rendered as:{
"date": "2022-03-12"
} |
Then
Queue has the message:
{
"date": "2022-03-12"
} |
Specified message value basically is a Handlebar template hence context variables and handlebars helpers may be used to resolve the final message.
The vars
attribute could be used to conveniently provide context variables for message template.
Given
When
<e:mq-send name="myQueue" from="/data/mq/msg.json" vars="myVar1={{now 'yyyy-MM-dd'}} | myVar2={{date myVar1 minus='1 d'}} | myVar3=str with commas , signs" varsSeparator="|"/>
will be rendered as:{
"date": "2022-03-12",
"var1": "2022-03-12",
"var2": "Fri Mar 11 00:00:00 MSK 2022",
"var3": "str with commas , signs"
} |
Then
Queue has the message:
{
"date": "2022-03-12",
"var1": "2022-03-12",
"var2": "Fri Mar 11 00:00:00 MSK 2022",
"var3": "str with commas , signs"
} |
Specifying message headers
The headers
attribute could be used to pass desired message headers to the MqTester
implementation.
Propagating this headers to the actual message is the MqTester implementation responsibility.
Given
When
some-id
<e:mq-send name="myQueue" headers="id={{id}}, contentEncoding=UTF-8">{}</e:mq-send>
will be rendered as:
| ||||
{} |
Then
Queue has the message with headers:
| ||||
{} |
Pretty-printing
Collapsable view
Big messages may be collapsed in report via the collapsable
attribute.
Given
Then
<e:mq-send name="myQueue" from="/data/mq/big.json" collapsable="true"/>
will be rendered as:[{
"index": 0,
"isActive": false,
"age": 28,
"name": "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong"
}, {
"index": 1,
"isActive": true,
"age": 29,
"name": "Kasey Burris"
}, {
"index": 2,
"isActive": false,
"age": 40,
"name": "Antoinette Morse"
}, {
"index": 3,
"isActive": true,
"age": 32,
"name": "Lilia Ramirez"
}, {
"index": 4,
"isActive": true,
"age": 35,
"name": "Lily Joyner"
}, {
"index": 5,
"isActive": false,
"age": 22,
"name": "Ronda Norton"
}, {
"index": 6,
"isActive": false,
"age": 31,
"name": "Tiffany Davidson"
}, {
"index": 7,
"isActive": false,
"age": 40,
"name": "Allie Wise"
}, {
"index": 8,
"isActive": true,
"age": 40,
"name": "Giles Lopez"
}, {
"index": 9,
"isActive": false,
"age": 25,
"name": "Ramsey Cain"
}] |
[{
"index": 0,
"isActive": false,
"age": 28,
"name": "LongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLongLong"
}, {
"index": 1,
"isActive": true,
"age": 29,
"name": "Kasey Burris"
}, {
"index": 2,
"isActive": false,
"age": 40,
"name": "Antoinette Morse"
}, {
"index": 3,
"isActive": true,
"age": 32,
"name": "Lilia Ramirez"
}, {
"index": 4,
"isActive": true,
"age": 35,
"name": "Lily Joyner"
}, {
"index": 5,
"isActive": false,
"age": 22,
"name": "Ronda Norton"
}, {
"index": 6,
"isActive": false,
"age": 31,
"name": "Tiffany Davidson"
}, {
"index": 7,
"isActive": false,
"age": 40,
"name": "Allie Wise"
}, {
"index": 8,
"isActive": true,
"age": 40,
"name": "Giles Lopez"
}, {
"index": 9,
"isActive": false,
"age": 25,
"name": "Ramsey Cain"
}] |
Highlighting
To hint report about the message format the formatAs
attribute can be used.
Supported values: xml, json (default).
Given
When
<e:mq-send name="myQueue" from="/data/mq/some.xml" formatAs="xml"/>
will be rendered as:<data>
<date>2022-03-12</date>
</data> |
When
<e:mq-send name="myQueue" from="/data/mq/some.txt"/>
will be rendered as:date 2022-03-12 |