Вставьте двойную кавычку в полезную нагрузку с помощью InfluxDB и потокового процессора WSO2 через HTTP - PullRequest
0 голосов
/ 28 декабря 2018

Я работаю над потоковым процессом, который может получать информацию из моей базы данных MySQL и анализировать ее в базе данных NoSQL (с InfluxDB).На данный момент я могу отправить запрос NoSQL через HTTP-запрос, но только если я хочу отправить целочисленное значение.Проблема в том, что когда я хочу отправить строковое значение, я не могу использовать двойные кавычки внутри своей полезной нагрузки «Текст», потому что это закроет мой атрибут.Если я использую одинарную кавычку вокруг моего строкового значения, InfluxDB возвращает ошибку:

    [2018-12-28_11-07-18_302] INFO     {org.wso2.siddhi.core.stream.output.sink.LogSink} - log : Event{timestamp=1545991638301, data=[{"error":"unable to parse 'SEQTIME value=267,x_date_create={1}': invalid boolean"} ], isExpired=false} (Encoded) 

Мой код:

@sink(type='http-request',
publisher.url='http://localhost:8086/write?db=bd_sensor_values',
method='POST',
headers="'Authorization: Basic XXXXX','Content-Type: application/x-www-form-urlencoded','cache-control: no-cache','Host:localhost:8086'",
sink.id="httpRequest_id",
@map(type='text', @payload("SEQTIME value={{id}},x_date_create={{x_date_create}}")))
define stream httpRequest (id int, x_date_create string);

Проблема в атрибуте @payload с x_date_create.Я пытался закодировать мои двойные кавычки, но это не сработало (может, я сделал это неправильно?)

Есть идеи?Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Вы можете использовать следующий способ, чтобы добавить двойные кавычки к вашим результатам

@payload(""" "SEQTIME value"="{{id}}","x_date_create"="{{x_date_create}}" """)))
0 голосов
/ 01 января 2019

Используйте двойные кавычки и экранирующие кавычки в строке.См. Пример из руководства по InfluxDB :

weather,location=us-midwest temperature="too\"hot\"" 1465839830100400200
...