首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未使用JavaScript部署Siddhi应用程序的分布式Wso2sp

未使用JavaScript部署Siddhi应用程序的分布式Wso2sp
EN

Stack Overflow用户
提问于 2019-07-13 04:53:31
回答 1查看 120关注 0票数 1

我正在尝试使用javascript函数运行siddhi应用程序,但当我将应用程序发送到管理器以便将其部署到分布式工作程序中时,它从未部署过。

我尝试在查询中删除对javascript函数的引用,它部署了,但在部署的应用程序中没有javascript代码。

这是siddhi应用程序:

代码语言:javascript
复制
@App:name("TestApp01")

define function sum[JavaScript] return double {
    return data[0] + data[1];
};

define stream SourceStream (id string, value1 double, value2 double);

@sink(type='log', prefix='received information...')
define stream SinkStream (id string, value1 double);

@info(name='Tags')
@dist(parallel='1')
from SourceStream
select id, sum(value1, value2) as value1
insert into SinkStream;

我在管理器中得到的错误如下:

代码语言:javascript
复制
WARN {org.wso2.carbon.sp.jobmanager.core.deployment.DeploymentManagerImpl} - Couldn't deploy partial Siddhi app TestApp01-1875a7b7-5c20-4f68-80b5-479296c7cd0f-1 in ResourceNode { id: wso2sp-worker-2, host: wso2sp-worker-2, port: 9443 }. Will retry in 2000 milliseconds.
WARN {org.wso2.carbon.sp.jobmanager.core.deployment.DeploymentManagerImpl} - Couldn't deploy partial Siddhi app TestApp01-1875a7b7-5c20-4f68-80b5-479296c7cd0f-1 in ResourceNode { id: wso2sp-worker-1, host: wso2sp-worker-1, port: 9443 }. Will retry in 2000 milliseconds.

我在工人中得到的错误是:

代码语言:javascript
复制
ERROR {org.wso2.carbon.stream.processor.core.internal.StreamProcessorService} - Exception occurred when validating Siddhi App TestApp01-1875a7b7-5c20-4f68-80b5-479296c7cd0f-1 org.wso2.siddhi.core.exception.SiddhiAppCreationException: Error on 'TestApp01-1875a7b7-5c20-4f68-80b5-479296c7cd0f-1' @ Line: 8. Position: 30, near 'sum(value1, value2)'.

如果我删除了javascript调用,它就会部署,但不会从生成的应用程序中删除javascript代码。这是在worker中部署的不带javascript函数的代码:

代码语言:javascript
复制
@App:name('TestApp01-2055a886-06ea-407d-9d42-e549a6cf47b3-1') 
@source(type='kafka', topic.list='TestApp01.SourceStream', group.id='TestApp01-2055a886-06ea-407d-9d42-e549a6cf47b3-0', threading.option='single.thread', bootstrap.servers='kafka:9092', @map(type='xml'))define stream SourceStream (id string, value1 double, value2 double);
@sink(type='log', prefix='received information...')
define stream SinkStream (id string, value1 double);
@info(name='Tags')

from SourceStream
select id, (value1 + value2) as value1
insert into SinkStream;

我希望使用javascript函数来部署siddhi应用程序,但它并没有与该部分代码一起部署。

EN

回答 1

Stack Overflow用户

发布于 2019-07-24 19:26:27

不幸的是,当前的分布式部署不支持函数的定义。这就是为什么你会得到这个部署错误。作为一种变通方法,而不是使用javascript函数,您可以构建siddhi函数来进行求和,就像您已经做的那样。下面是一个例子

代码语言:javascript
复制
@App:name("TestApp01")

define stream SourceStream (id string, value1 double, value2 double);

@sink(type='log', prefix='received information...')
define stream SinkStream (id string, value1 double);

@info(name='Tags')
@dist(parallel='1')
from SourceStream
select id, value1 + value2 as value1
insert into SinkStream;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57013908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档