Search in sources :

Example 1 with TbActorNotRegisteredException

use of org.thingsboard.server.actors.TbActorNotRegisteredException in project thingsboard by thingsboard.

the class TenantActor method onQueueToRuleEngineMsg.

private void onQueueToRuleEngineMsg(QueueToRuleEngineMsg msg) {
    if (!isRuleEngine) {
        log.warn("RECEIVED INVALID MESSAGE: {}", msg);
        return;
    }
    TbMsg tbMsg = msg.getMsg();
    if (getApiUsageState().isReExecEnabled()) {
        if (tbMsg.getRuleChainId() == null) {
            if (getRootChainActor() != null) {
                getRootChainActor().tell(msg);
            } else {
                tbMsg.getCallback().onFailure(new RuleEngineException("No Root Rule Chain available!"));
                log.info("[{}] No Root Chain: {}", tenantId, msg);
            }
        } else {
            try {
                ctx.tell(new TbEntityActorId(tbMsg.getRuleChainId()), msg);
            } catch (TbActorNotRegisteredException ex) {
                log.trace("Received message for non-existing rule chain: [{}]", tbMsg.getRuleChainId());
                // TODO: 3.1 Log it to dead letters queue;
                tbMsg.getCallback().onSuccess();
            }
        }
    } else {
        log.trace("[{}] Ack message because Rule Engine is disabled", tenantId);
        tbMsg.getCallback().onSuccess();
    }
}
Also used : TbActorNotRegisteredException(org.thingsboard.server.actors.TbActorNotRegisteredException) TbEntityActorId(org.thingsboard.server.actors.TbEntityActorId) RuleEngineException(org.thingsboard.server.common.msg.queue.RuleEngineException) TbMsg(org.thingsboard.server.common.msg.TbMsg)

Aggregations

TbActorNotRegisteredException (org.thingsboard.server.actors.TbActorNotRegisteredException)1 TbEntityActorId (org.thingsboard.server.actors.TbEntityActorId)1 TbMsg (org.thingsboard.server.common.msg.TbMsg)1 RuleEngineException (org.thingsboard.server.common.msg.queue.RuleEngineException)1