Я отправляю данные в концентратор событий из функции azure со следующим кодом.
module.exports = async function (context, myTimer) {
const { EventHubClient, EventData, EventPosition, OnMessage, OnError, MessagingError } = require("@azure/event-hubs");
const connectionString = "Endpoint=connection string"
const eventHubsName = "eventhub_2"
var axios = require('axios')
const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName);
context.log('sssaaa')
var response = await axios.get('https://nseindia.com/live_market/dynaContent/live_watch/stock_watch/nifty500StockWatch.json')
await client.send(response['data']['data'])
context.log('message sent')
};
Я могу отправить данные, но когда я обрабатываю их с помощью потоковой аналитики Azure, яПолучение следующего
error:
No events found for 'NSEStockInput'.
Start time: Tuesday, September 24, 2019, 12:30:18 PM
End time: Tuesday, September 24, 2019, 12:33:18 PM
Last time arrival: Tuesday, September 24, 2019, 12:33:18 PM
Diagnostics: Source '<unknown_location>' had 1 occurrences of kind 'InputDeserializerError.InvalidData' between processing times '2019-09-24T07:03:22.9492042Z' and '2019-09-24T07:03:22.9492042Z'. Json input stream should either be an array of objects or line separated objects. Found token type: Null
'InputDeserializerError.InvalidData' означает здесь, что он сериализует данные, поэтому мне нужно отправлять данные десериализованным способом, но client.send или client.batch могут принимать только данные, типизированные объектом JSON.Это образец JSON, который отправляется в концентратор событий.
[ { symbol: 'ALLCARGO',
open: '106.90',
high: '114.90',
low: '106.70',
ltP: '109.75',
ptsC: '8.60',
per: '8.50',
trdVol: '8.20',
trdVolM: '0.82',
ntP: '9.03',
mVal: '0.09',
wkhi: '124.45',
wklo: '87.15',
wkhicm_adj: '357.70',
wklocm_adj: '102.00',
xDt: '31-DEC-2999',
cAct: '-',
previousClose: '101.15',
dayEndClose: '-',
iislPtsChange: '8.60',
iislPercChange: '8.50',
yPC: '3.98',
mPC: '19.55' },
{ symbol: 'IDBI',
open: '30.80',
high: '33.80',
low: '30.40',
ltP: '33.25',
ptsC: '2.30',
per: '7.43',
trdVol: '132.04',
trdVolM: '13.20',
ntP: '43.01',
mVal: '0.43',
wkhi: '65.75',
wklo: '23.65',
wkhicm_adj: '116.40',
wklocm_adj: '52.90',
xDt: '09-AUG-2019',
cAct: 'ANNUAL GENERAL MEETING',
previousClose: '30.95',
dayEndClose: '-',
iislPtsChange: '2.30',
iislPercChange: '7.43',
yPC: '-36.91',
mPC: '18.54' }]
Это прекрасно работает, когда я использую приведенный ниже код с концентратором событий как out bind в функции azure module.exports = асинхронная функция (context, myTimer) {var axios = require ('axios') var response = await axios.get ('https://nseindia.com/live_market/dynaContent/live_watch/stock_watch/nifty500StockWatch.json') // var sendBatchData = {body: response ['data'] ['data'], partitionKey: "pk12345"} // context.log (response ['data'] ['data']) //sample = [{'name': 'saran'}, {'name': 'jeeva'}] return JSON.stringify (response ['data'] ['data'])
};