
Maksim
13.08.2018
08:40:57
Можно и так сказать) кто-то пруфа юзает, кто-то свои велосипеды

Dmitry
13.08.2018
08:41:08

Maksim
13.08.2018
08:41:23
Мне бродвей не понравился

Max
13.08.2018
08:41:52

Google

Maksim
13.08.2018
08:42:11
у меня свой велосипед, который устраивает полностью. так что всякие пруфы, бродвеи и т.д. не нужны. Можно посматривать в ожидании светлых идей, но не более

Max
13.08.2018
08:46:06

Maksim
13.08.2018
08:49:27
страшно как-то звучит)

Max
13.08.2018
08:50:36
ну получается как, одна сага может порождать другую?

Maksim
13.08.2018
08:50:44
может

Max
13.08.2018
08:52:51
а страшно, это то что у меня сейчас)

Maksim
13.08.2018
08:53:11
не, страшно - это обеспечить консистентность надцати саг

Max
13.08.2018
08:56:09
наркомания кароч
ну там не так много кейсов когда их нужно синхронизировать - разве что успешный и крайний не успешный кейсы
когда уже сделали ретрай и уже ничему не помочь

Maksim
13.08.2018
09:02:11
ну, раз всё та просто, дерзай)

Dmitry
13.08.2018
15:08:39
@thatside halp

Google

Bohdan
13.08.2018
15:08:56
оно само должно

Dmitry
13.08.2018
15:09:25
Похоже, у кого-то прилег вебхук

Sergey
13.08.2018
15:11:04
сорян, я удалил(


Денис
14.08.2018
10:52:22
Привет. Растолкуйте пожалуйста про очереди (RabbitMQ), не могу догнать.
Код на РНР является Producer-ом для очереди - добавляет в нее задачи.
Сторонний код является Consumer-ом и выполняет эти задачи.
В простом варианте, когда это задачи, скажем, на рассылку почты или уменьшение размера изображений, тут всё кажется понятным: мой код на РНР добавил задачу в очередь и забыл про нее. Сторонний код получил задачу из очереди и обработал ее.
Но в варианте, в котором нужно получить результат задачи, я что-то не могу разобраться чисто архитектурно. Например, мой код на РНР кидает в очередь задачу, подписчик должен ее выполнить и вернуть результат работы поставщику (моему коду). Каким способом этот возврат результатов реализуется? Есть ли в RabbitMQ какие-то средства для этого или же результат работы должен передаваться используя другую очередь, скажем, для результатов, в которой сторонний код, исполняющий задачу, будет в роли поставщика, а мой код на РНР будет в роли подписчика?
Подскажите пожалуйста, а то что-то в этом месте образовался пробел в понимании работы.


Maksim
14.08.2018
10:59:11
pub\sub, command, event
Продюсер пишет команду:
- сделай заебись
- консамер всё сделал, кидает эвент что такая-то задача выполнена.
кому нужен результат подписывается на получение этого сообщения (эвента) и ждёт


Shaun
14.08.2018
11:01:00
Привет. Растолкуйте пожалуйста про очереди (RabbitMQ), не могу догнать.
Код на РНР является Producer-ом для очереди - добавляет в нее задачи.
Сторонний код является Consumer-ом и выполняет эти задачи.
В простом варианте, когда это задачи, скажем, на рассылку почты или уменьшение размера изображений, тут всё кажется понятным: мой код на РНР добавил задачу в очередь и забыл про нее. Сторонний код получил задачу из очереди и обработал ее.
Но в варианте, в котором нужно получить результат задачи, я что-то не могу разобраться чисто архитектурно. Например, мой код на РНР кидает в очередь задачу, подписчик должен ее выполнить и вернуть результат работы поставщику (моему коду). Каким способом этот возврат результатов реализуется? Есть ли в RabbitMQ какие-то средства для этого или же результат работы должен передаваться используя другую очередь, скажем, для результатов, в которой сторонний код, исполняющий задачу, будет в роли поставщика, а мой код на РНР будет в роли подписчика?
Подскажите пожалуйста, а то что-то в этом месте образовался пробел в понимании работы.
И ждёт - Максим имеет ввиду что предположительно у тебя демон, если же нет - то лучше не кидать задачу в очередь а просто вызывать нужные тебе методы сервиса


Bohdan
14.08.2018
11:01:00
> Есть ли в RabbitMQ какие-то средства для этого
RPC там есть

Денис
14.08.2018
11:13:32
Ткните пожалуйста, где почитать. Не хочу напрягать вас своим нубством. Просто этот момент никак не пойму.

Bohdan
14.08.2018
11:15:40

Денис
14.08.2018
11:15:49
то есть ответ через другую очередь?

Bohdan
14.08.2018
11:16:05
например, так
pub/sub еще через redis любят делать

Денис
14.08.2018
11:16:11
консумер кончил и кинул сообщение в другую очередь, скажем "очередь результатов работы", которую слушает демон на РНР
мне сейчас важно понять, что стандартные средства кролика да и вообще очередей не располагают специальной передачей результатов работы. чтоыб не вышло так, что я накостылю, а решение было на поверхности

Bohdan
14.08.2018
11:17:29
я тебе уже ответил: у кролика есть rpc

Денис
14.08.2018
11:17:40
буду гуглить про рпц. спасибо

Bohdan
14.08.2018
11:17:54
https://www.rabbitmq.com/tutorials/tutorial-six-php.html
но это больше про реквест-респонс будет

Денис
14.08.2018
11:18:28
нашел уже. спасибо. хоть как-то разберусь. потом, если что, спрошу.

Google

Oleg
14.08.2018
11:21:34
Чёт я не помню rpc у кролика. Его можно построить, но из коробки такого механизма нет. Может плагин какой?

Bohdan
14.08.2018
11:23:12

Денис
14.08.2018
11:23:38
вон ссылка на доку выше
Если вдруг есть какие-то еще способы (бестпрактикс) передачи результатов работы продюсеру - с удовольствием выслушаю.

Bohdan
14.08.2018
11:24:00

Dmitry
14.08.2018
11:24:08

Oleg
14.08.2018
11:25:18
Ну так это не механизм кролика, а один из вариантов использования очередей. Его нужно реализовывать самостоятельно, в отличии от директов и фанаута


Денис
14.08.2018
11:26:53
опиши свой кейс, может есть варианты получше
Специфическое приложение - работает с оборудованием. Пользователь через интерфейс запрашвиает состояние оборудования. Это состояние может определяться отеносительно долгое время. То есть открыл страницу с устройством, через N секунд получил результат. Фактически получением результата занимаюстя консумеры на питоне. Они опрашивают, вычисляют и т.д. делают много работы в общем. Но также нужно опрашивать оборудование периодически для накопления статистики - это делают простые скрипты через cron - они просто добавляют в очередь точно такую же задачу на опрос оборудования. Результаты должны приниматься ядром и помещаться в базу данных. Но если запросил пользователь, а не скрипт из крона, то еще и пользователю надо сообщить результат в браузер.
то есть инициаторов запуска опроса несколько. но результаты надо возвращать всегда ядру, которое знает что с ними делать.


Oleg
14.08.2018
11:27:50
«На кролике можно сделать rpc», а не «в кролике есть rpc »
Так может и не ждать ответа, а периодически спрашивать результат, раз он где то храниться?

Денис
14.08.2018
11:30:09
от этого как раз и уходим в сторону нормальной асинхронности и вебсокетов
много причин не опрашивать периодически

Oleg
14.08.2018
11:31:00
Ну тогда строй rpc
Две очереди, продюсер шлёт запрос в одну очередь и слушает ответ из другой
Классический вариант

Maksim
14.08.2018
11:35:37
продюсер в очереди ничего не шлёт, так-то)

Oleg
14.08.2018
11:39:08
Ну ок, в rpc продюсер называют клиентом, а консьюмер сервером. Пусть так

Maksim
14.08.2018
11:39:39
суть в том, что сообщеньки улетают в эксчендж, а не в очередь)

Bohdan
14.08.2018
11:39:49

Денис
14.08.2018
11:40:44
Чувствую, меня ждут приключения )))

Google

Денис
14.08.2018
11:40:56
Ок. Спасибо! :) Уже интересно

Bohdan
14.08.2018
11:42:03
убиваем браконьеров

Maksim
14.08.2018
11:42:04
паблишер -> exchange -> routing key -> queue (1?)
сабскрайбер -> queue
паблишер к очереди отношения не имеет) он про неё тупо не знает.
ию2 в чатике? беги...

Admin
ERROR: S client not available

Bohdan
14.08.2018
11:42:25
нима

Maksim
14.08.2018
11:42:33

Андрей
14.08.2018
11:42:37
показалось

Денис
14.08.2018
11:42:39

Bohdan
14.08.2018
11:42:52
я его не забанил, но спам отметил

Oleg
14.08.2018
11:43:10
Ну документация кролика не делает разницы публикует ли продюсер в очередь или в эксченьж

Rodion
14.08.2018
11:43:25
это не спам.

Sergey
14.08.2018
11:43:27

Rodion
14.08.2018
11:43:33
Парни мне php-ник нужен)

Bohdan
14.08.2018
11:43:51
это спам до тех пор, пока рассылка не согласована с администрацией чата

Sergey
14.08.2018
11:43:52
иди на апворки всякие с такими штуками

Андрей
14.08.2018
11:44:32

Maksim
14.08.2018
11:45:14

Google

Oleg
14.08.2018
11:46:19

Maksim
14.08.2018
11:47:06
да это не для кролика сделано, а в принципе) что бы можно было отсылать не 1к1, а 1 ко многим)

Oleg
14.08.2018
11:48:17
Это всего лишь один из способов этого добиться
В zmq например нет эксченжа, только очереди

Alexander
14.08.2018
11:51:46

Oleg
14.08.2018
11:53:37
Но ведёт оно себя как очередь :)

Sergey
14.08.2018
11:53:55

Alexander
14.08.2018
11:54:10
и буфер этот можно переполнить кстати:)

Oleg
14.08.2018
11:56:52

Maksim
14.08.2018
11:57:26
суть эксченджа - как раз отвязать отправителя от конкретного назначения) так что отправитель про очередь знает, что она, наверное, суещтвует) и только

Alexey
14.08.2018
14:17:28
Всем привет. Как при записи в цикле строк в файле, записывать их в начало файла и смещать остальное вниз?

Vladislav
14.08.2018
14:18:08