Commit 1ce365d8df83521ee64f88375d89f7f1719b96f0
Committed by
GitHub
1 parent
4b0aae89
Improvements RestJsonConverter (#2452)
* Improvements RestJsonConverter * Refactored RestJsonConverter
Showing
3 changed files
with
23 additions
and
8 deletions
... | ... | @@ -93,6 +93,7 @@ public class BaseRuleChainTransactionService implements RuleChainTransactionServ |
93 | 93 | TbTransactionTask transactionTask = new TbTransactionTask(msg, onStart, onEnd, onFailure, System.currentTimeMillis() + duration); |
94 | 94 | int queueSize = queue.size(); |
95 | 95 | if (queueSize >= finalQueueSize) { |
96 | + log.trace("Queue has no space: {}", transactionTask); | |
96 | 97 | executeOnFailure(transactionTask.getOnFailure(), "Queue has no space!"); |
97 | 98 | } else { |
98 | 99 | addMsgToQueues(queue, transactionTask); | ... | ... |
... | ... | @@ -250,9 +250,9 @@ actors: |
250 | 250 | error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}" |
251 | 251 | transaction: |
252 | 252 | # Size of queues which store messages for transaction rule nodes |
253 | - queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:20}" | |
253 | + queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:15000}" | |
254 | 254 | # Time in milliseconds for transaction to complete |
255 | - duration: "${ACTORS_RULE_TRANSACTION_DURATION:15000}" | |
255 | + duration: "${ACTORS_RULE_TRANSACTION_DURATION:60000}" | |
256 | 256 | statistics: |
257 | 257 | # Enable/disable actor statistics |
258 | 258 | enabled: "${ACTORS_STATISTICS_ENABLED:true}" | ... | ... |
... | ... | @@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; |
22 | 22 | import org.thingsboard.server.common.data.kv.BasicTsKvEntry; |
23 | 23 | import org.thingsboard.server.common.data.kv.BooleanDataEntry; |
24 | 24 | import org.thingsboard.server.common.data.kv.DoubleDataEntry; |
25 | +import org.thingsboard.server.common.data.kv.JsonDataEntry; | |
25 | 26 | import org.thingsboard.server.common.data.kv.KvEntry; |
26 | 27 | import org.thingsboard.server.common.data.kv.LongDataEntry; |
27 | 28 | import org.thingsboard.server.common.data.kv.StringDataEntry; |
... | ... | @@ -73,15 +74,28 @@ public class RestJsonConverter { |
73 | 74 | if (!value.isObject()) { |
74 | 75 | if (value.isBoolean()) { |
75 | 76 | return new BooleanDataEntry(key, value.asBoolean()); |
76 | - } else if (value.isDouble()) { | |
77 | - return new DoubleDataEntry(key, value.asDouble()); | |
78 | - } else if (value.isLong()) { | |
79 | - return new LongDataEntry(key, value.asLong()); | |
80 | - } else { | |
77 | + } else if (value.isNumber()) { | |
78 | + return parseNumericValue(key, value); | |
79 | + } else if (value.isTextual()) { | |
81 | 80 | return new StringDataEntry(key, value.asText()); |
81 | + } else { | |
82 | + throw new RuntimeException(CAN_T_PARSE_VALUE + value); | |
82 | 83 | } |
83 | 84 | } else { |
84 | - throw new RuntimeException(CAN_T_PARSE_VALUE + value); | |
85 | + return new JsonDataEntry(key, value.toString()); | |
86 | + } | |
87 | + } | |
88 | + | |
89 | + private static KvEntry parseNumericValue(String key, JsonNode value) { | |
90 | + if (value.isFloatingPointNumber()) { | |
91 | + return new DoubleDataEntry(key, value.asDouble()); | |
92 | + } else { | |
93 | + try { | |
94 | + long longValue = Long.parseLong(value.toString()); | |
95 | + return new LongDataEntry(key, longValue); | |
96 | + } catch (NumberFormatException e) { | |
97 | + throw new IllegalArgumentException("Big integer values are not supported!"); | |
98 | + } | |
85 | 99 | } |
86 | 100 | } |
87 | 101 | } | ... | ... |