Опитвам се да прочета някакъв файл, като отворя потока за четене и изпращам части от файла през ZMQ към друг процес, за да ги консумира. Потокът работи както трябва, но когато стартирам работния файл, той не вижда изпратените данни.
Опитах да изпращам данни през сокет на всеки 500 милисекунди, а не при обратно извикване, и когато стартирам работния файл, той събира всички предишни части от данни:
sender = zmq.socket('push')
setInterval(() ->
console.log('sending work');
sender.send('some work')
, 500)
receiver = zmq.socket("pull")
receiver.on "message", (msg) ->
console.log('work is here: %s', msg.toString())
Изходи:
sending work
sending work
sending work
sending work
sending work
// here I start the worker
sending work
work is here: some work
work is here: some work
work is here: some work
work is here: some work
work is here: some work
work is here: some work
sending work
work is here: some work
sending work
work is here: some work
sending work
work is here: some work
Така че, когато работникът стартира, той започва с изтегляне на всички предишни данни и след това ги изтегля всеки път, когато влезе sth new. Това не се прилага, когато правя това:
readStream = fs.createReadStream("./data/pg2701.txt", {'bufferSize': 100 * 1024})
readStream.on "data", (data) ->
console.log('sending work');
sender.send('some work'); // I'd send 'data' if it worked..
В този сценарий работникът изобщо не изтегля никакви данни. Тези видове сокети трябва ли да създават опашка или не? Какво ми липсва тук?