Added usage of msg count in the generator node
This commit is contained in:
parent
75702b6474
commit
a1aea81366
@ -54,6 +54,7 @@ public class TbMsgGeneratorNode implements TbNode {
|
|||||||
private ScriptEngine jsEngine;
|
private ScriptEngine jsEngine;
|
||||||
private long delay;
|
private long delay;
|
||||||
private long lastScheduledTs;
|
private long lastScheduledTs;
|
||||||
|
private int currentMsgCount;
|
||||||
private EntityId originatorId;
|
private EntityId originatorId;
|
||||||
private UUID nextTickId;
|
private UUID nextTickId;
|
||||||
private TbMsg prevMsg;
|
private TbMsg prevMsg;
|
||||||
@ -63,6 +64,7 @@ public class TbMsgGeneratorNode implements TbNode {
|
|||||||
public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException {
|
public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException {
|
||||||
this.config = TbNodeUtils.convert(configuration, TbMsgGeneratorNodeConfiguration.class);
|
this.config = TbNodeUtils.convert(configuration, TbMsgGeneratorNodeConfiguration.class);
|
||||||
this.delay = TimeUnit.SECONDS.toMillis(config.getPeriodInSeconds());
|
this.delay = TimeUnit.SECONDS.toMillis(config.getPeriodInSeconds());
|
||||||
|
this.currentMsgCount = 0;
|
||||||
if (!StringUtils.isEmpty(config.getOriginatorId())) {
|
if (!StringUtils.isEmpty(config.getOriginatorId())) {
|
||||||
originatorId = EntityIdFactory.getByTypeAndUuid(config.getOriginatorType(), config.getOriginatorId());
|
originatorId = EntityIdFactory.getByTypeAndUuid(config.getOriginatorType(), config.getOriginatorId());
|
||||||
} else {
|
} else {
|
||||||
@ -94,9 +96,10 @@ public class TbMsgGeneratorNode implements TbNode {
|
|||||||
if (initialized && msg.getType().equals(TB_MSG_GENERATOR_NODE_MSG) && msg.getId().equals(nextTickId)) {
|
if (initialized && msg.getType().equals(TB_MSG_GENERATOR_NODE_MSG) && msg.getId().equals(nextTickId)) {
|
||||||
withCallback(generate(ctx),
|
withCallback(generate(ctx),
|
||||||
m -> {
|
m -> {
|
||||||
if (initialized) {
|
if (initialized && (config.getMsgCount() == TbMsgGeneratorNodeConfiguration.UNLIMITED_MSG_COUNT || currentMsgCount < config.getMsgCount())) {
|
||||||
ctx.tellNext(m, SUCCESS);
|
ctx.tellNext(m, SUCCESS);
|
||||||
scheduleTickMsg(ctx);
|
scheduleTickMsg(ctx);
|
||||||
|
currentMsgCount++;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
t -> {
|
t -> {
|
||||||
|
|||||||
@ -19,11 +19,11 @@ import lombok.Data;
|
|||||||
import org.thingsboard.rule.engine.api.NodeConfiguration;
|
import org.thingsboard.rule.engine.api.NodeConfiguration;
|
||||||
import org.thingsboard.server.common.data.EntityType;
|
import org.thingsboard.server.common.data.EntityType;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class TbMsgGeneratorNodeConfiguration implements NodeConfiguration<TbMsgGeneratorNodeConfiguration> {
|
public class TbMsgGeneratorNodeConfiguration implements NodeConfiguration<TbMsgGeneratorNodeConfiguration> {
|
||||||
|
|
||||||
|
public static final int UNLIMITED_MSG_COUNT = 0;
|
||||||
|
|
||||||
private int msgCount;
|
private int msgCount;
|
||||||
private int periodInSeconds;
|
private int periodInSeconds;
|
||||||
private String originatorId;
|
private String originatorId;
|
||||||
@ -33,7 +33,7 @@ public class TbMsgGeneratorNodeConfiguration implements NodeConfiguration<TbMsgG
|
|||||||
@Override
|
@Override
|
||||||
public TbMsgGeneratorNodeConfiguration defaultConfiguration() {
|
public TbMsgGeneratorNodeConfiguration defaultConfiguration() {
|
||||||
TbMsgGeneratorNodeConfiguration configuration = new TbMsgGeneratorNodeConfiguration();
|
TbMsgGeneratorNodeConfiguration configuration = new TbMsgGeneratorNodeConfiguration();
|
||||||
configuration.setMsgCount(0);
|
configuration.setMsgCount(UNLIMITED_MSG_COUNT);
|
||||||
configuration.setPeriodInSeconds(1);
|
configuration.setPeriodInSeconds(1);
|
||||||
configuration.setJsScript("var msg = { temp: 42, humidity: 77 };\n" +
|
configuration.setJsScript("var msg = { temp: 42, humidity: 77 };\n" +
|
||||||
"var metadata = { data: 40 };\n" +
|
"var metadata = { data: 40 };\n" +
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user