Merge branch 'master' of github.com:thingsboard/thingsboard

This commit is contained in:
Igor Kulikov 2020-02-24 18:24:50 +02:00
commit e563939c66
3 changed files with 23 additions and 8 deletions

View File

@ -93,6 +93,7 @@ public class BaseRuleChainTransactionService implements RuleChainTransactionServ
TbTransactionTask transactionTask = new TbTransactionTask(msg, onStart, onEnd, onFailure, System.currentTimeMillis() + duration);
int queueSize = queue.size();
if (queueSize >= finalQueueSize) {
log.trace("Queue has no space: {}", transactionTask);
executeOnFailure(transactionTask.getOnFailure(), "Queue has no space!");
} else {
addMsgToQueues(queue, transactionTask);

View File

@ -250,9 +250,9 @@ actors:
error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}"
transaction:
# Size of queues which store messages for transaction rule nodes
queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:20}"
queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:15000}"
# Time in milliseconds for transaction to complete
duration: "${ACTORS_RULE_TRANSACTION_DURATION:15000}"
duration: "${ACTORS_RULE_TRANSACTION_DURATION:60000}"
statistics:
# Enable/disable actor statistics
enabled: "${ACTORS_STATISTICS_ENABLED:true}"

View File

@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
import org.thingsboard.server.common.data.kv.BasicTsKvEntry;
import org.thingsboard.server.common.data.kv.BooleanDataEntry;
import org.thingsboard.server.common.data.kv.DoubleDataEntry;
import org.thingsboard.server.common.data.kv.JsonDataEntry;
import org.thingsboard.server.common.data.kv.KvEntry;
import org.thingsboard.server.common.data.kv.LongDataEntry;
import org.thingsboard.server.common.data.kv.StringDataEntry;
@ -73,15 +74,28 @@ public class RestJsonConverter {
if (!value.isObject()) {
if (value.isBoolean()) {
return new BooleanDataEntry(key, value.asBoolean());
} else if (value.isDouble()) {
return new DoubleDataEntry(key, value.asDouble());
} else if (value.isLong()) {
return new LongDataEntry(key, value.asLong());
} else {
} else if (value.isNumber()) {
return parseNumericValue(key, value);
} else if (value.isTextual()) {
return new StringDataEntry(key, value.asText());
} else {
throw new RuntimeException(CAN_T_PARSE_VALUE + value);
}
} else {
throw new RuntimeException(CAN_T_PARSE_VALUE + value);
return new JsonDataEntry(key, value.toString());
}
}
private static KvEntry parseNumericValue(String key, JsonNode value) {
if (value.isFloatingPointNumber()) {
return new DoubleDataEntry(key, value.asDouble());
} else {
try {
long longValue = Long.parseLong(value.toString());
return new LongDataEntry(key, longValue);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Big integer values are not supported!");
}
}
}
}