通过 HTTP 传输接收事件并使用 JSON 输入数据在控制台上查看输出

Receive events via HTTP transport and view the output on the console with JSON input data

我正在使用我自己的数据在 siddhi 编辑器中关注 ReceiveAndcount 示例,以咨询需要输入数据才能响应的外部 URL(标记、日期和 device_id)。这个查询应该 return 一个 JSON 带有一个日期,一个布尔值和三个浮点数据。

我的代码如下:

@Source(type = 'http',
    receiver.url='some_url',
    @map(type='json',
        @attributes('Token'='my_token_AAABBBCCC',
           'StartDate'='2019-01-30 15:57:00',
           'EndDate'='2019-01-30 15:58:00',
           'Device'='device_id')))
define stream SomeStream (
    date string,
    ValueIsValid bool,
    DATA1 float,
    DATA2 float,
    DATA3 float
)

-- Destination
@sink(type='log')
define stream MyOutputStream (EA1 float, EA2 float);

-- Show the selected data
@info(name='queryEA1_EA2')
from SomeStream
select EA1, EA2
insert into MyOutputStream;

我无法得到任何结果,控制台中只有一个 "TestingReceiveAndCount.siddhi - Siddhi AppTestingReceiveAndCount is in faulty state." 错误。

我已经检查了 siddhi 文档,我不确定我是否将输入数据正确传递给 URL 以获得响应

要在 WSO2 SP 中发送 HTTP 请求和接收响应,您必须使用, http-request(sink) 和 http-response(source)。请看下面的代码,

@sink(type = 'http-request', sink.id = 'HttpReqRes', publisher.url = 'url_to_invoke', method = 'GET',
    @map(type = 'json'))
define stream localTestEventReq (token string, startdate string, enddate string, device string);

@source(type = 'http-response', sink.id = 'HttpReqRes', http.status.code = '200', 
    @map(type = 'json')) 
define stream localTestEventRes2xx(data1 string, data1 string);

此处,当您使用流属性的值调用 localTestEventReq 时(或 simulate for testing), a request will be sent out and if the response is of code 200, an event would arrive in localTestEventRes2xx. Please see the api docs 用于上述接收器和源。