This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-01-30
Channels
- # bangalore-clj (1)
- # beginners (104)
- # boot (207)
- # cider (173)
- # cljs-dev (157)
- # cljsjs (1)
- # cljsrn (51)
- # clojure (196)
- # clojure-berlin (1)
- # clojure-chicago (1)
- # clojure-italy (4)
- # clojure-new-zealand (1)
- # clojure-nl (1)
- # clojure-russia (28)
- # clojure-spec (17)
- # clojure-uk (73)
- # clojured (13)
- # clojurescript (110)
- # core-async (4)
- # datascript (25)
- # datomic (92)
- # editors (1)
- # emacs (157)
- # events (4)
- # hoplon (16)
- # klipse (74)
- # lein-figwheel (10)
- # leiningen (2)
- # lumo (13)
- # off-topic (78)
- # om (3)
- # om-next (3)
- # onyx (14)
- # protorepl (1)
- # re-frame (17)
- # reagent (23)
- # remote-jobs (1)
- # ring-swagger (33)
- # schema (2)
- # slack-help (3)
- # spacemacs (7)
- # testing (1)
- # yada (7)
привет. я хочу сделать такую тулзу - простой http-прокси, который один бэкэнд считает эталонным и сразу же отдает клиенту результат запроса к нему, а в фоне делает этот же запрос во второй, тестовый бэкэнд, сверяет ответы и куда-то репортит при несовпадении. с прокси-частью все просто - взял aleph, в нем все есть. а вот со сравнением ответов в фоне у меня есть некоторое непонимание - как вообще сделать обработку в фоне?
то есть, если бы я писал это на эрланге, мне было бы понятно - сразу после получения ответа от основного бэкэнда создаем новый процесс, в котором делаем второй запрос и там же сравниваем результаты. а вот как это канонично сделать на clojure я пока не понимаю.
по мне дак сделать внешнюю очередь и обрабатывать все там отдельно
1 - этот прокси предполагается self-contained тулзой без зависимостей и предельно тупым деплойментом. если бы не “предельно тупой деплоймент”, я бы взял эрланг. 2 - зачем мне внешняя очередь, если у меня нормальный multicore рантайм? я на общем уровне понимаю, что мне нужно как-то сделать thread pool with bounded task queue, я не знаю, как это сделать из имеющихся у меня компонент.
@nwalkr про асинк в кложе наверное подскажут, но есть запасной аэродром в виде java, можно подумать чтобы создать threadpoolexecutor или чего там, и оттуда же пускать любимую кложу
давненько не дергал алеф, но нельзя-ли просто создать manifold.deferred в конце реквеста и там сделать что надо + если надо координацию через простой атом ну или какой java queue механизм
ну у aleph там своя обертка уже есть в виде этого manifold.deferred
хотя суть одна да
о чем хоть речь?
ещё, кажется, по описанию их система не может работать когда клиентов больше нескольких десятков. кажется.
ещё кстати нубский вопрос по фронт-энду у меня есть меню, выбирающее из трёх компонентов, и в первом из них подменю
роутинг маршрутизирует на что-то одно, как я понимаю. то есть на название под-компонента (положим, выбран первый пункт меню, второй подпункт) как мне в главном компоненте узнать, какой пункт меню выбран?
@leov: 1. Через стейт аппа, путем изменения этого стейта 2. Через стейт компонента, путем изменения стейта компоненты в нужно чилдрене
от маршрутизатора я получаю только имя дочернего компонента. я (зачем-то) смоделировал это как единый рутовый компонент, который выбирает один из дочерних менюшных, а они выбирают видимо подменюшные
я так понимаю, надо перемоделировать каждый конечный маршрутизируемый компонент как рутовый