Commands are discrete, while states seem more fleeting. That is, if you run a rule called by the “received Item X command”, you can use the “receivedCommand” variable in the rule to execute something, and the rule runs for each command. However, you must read the current state from the element or use the previous state for the previous state.
I found for an element that updates its state a lot, it works for one change, but by the time you read the state of the element, it may change again; the current value is always returned. This is how it should be. If, however, you use the state as a pseudo-inbound queue from MQTT or some external source, you will lose messages. If they come in as teams, you will not.
source share