Size: a a a

Clojure — русскоговорящее сообщество

2021 June 28

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
обычно (ну, у меня так), в контексте держится запущенный пул подключений к базе (типа hikaricp)
и запросы делаются через коннекты из пула
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Тебе надо поверить в то, что контекст - это часть стейта приложения. Хотя тебе кажется, что оно у тебя stateless.
источник

SP

Stas P in Clojure — русскоговорящее сообщество
вот смотри самый элементарный вариант в джаве или скале держать стейт - это создать объект (мутабельный) или создать статик класс (что тоже самое). и его состояния будут доступны всему приложению
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
мне нужно
я integrant использую и mount
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Коннект (или пул) к БД это стейт.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
В кложе это var (тот, который определяется через def)
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
в контексте integrant -
пул соединений будет определен в рамках твоей системы (или конфига)
для всех функций которые будут с этим пулом работать - надо явно определить (в том же самом конфиге) что они зависят от пула и тогда при инициализации конфига инитиалайзер этой самой функции будет иметь доступ к проинициализированному пулу
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
вот смотри самый элементарный вариант в кложе держать стейт - это завести атом. и его состояния будут доступны всему приложению
😊
источник

SP

Stas P in Clojure — русскоговорящее сообщество
ааа. то есть я могу создать пулл коннекшинов положить их в атом
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
да, атом — это контейнер для мутабельных данных
источник

SP

Stas P in Clojure — русскоговорящее сообщество
а как он кстати реализован? просто через синхронизацию?
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
зачем атом? можно и как def определить
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
но это поломает repl-driven разработку потому что придется рестартить вообще все что бы быть уверенным что пул пересоздался
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
это касается не только top-level переменной, но и атома
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
смотри исходники для clojure.lang.Atom
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
просто через java.util.concurrent.atomic.AtomicReference
источник

SP

Stas P in Clojure — русскоговорящее сообщество
а ну понятно. разумно. там не через синки сделано
источник

SP

Stas P in Clojure — русскоговорящее сообщество
можно пример как определить как деф и чтоб там было состояние? снова же атом.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
про ClojureScript, правда, не скажу 😊
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
(def my-pool (create-pool …))
источник