переопределение очереди при отсутствии подписчиков

12 views
Skip to first unread message

Дмитрий Николаевич

unread,
Nov 21, 2019, 2:43:54 AM11/21/19
to SObjectizer
Добрый день.
Судя по текущему дизайну, очередь  - сущность диспетчера, соответственно ее время жизни ограничено временем жизни диспетчера.
Второй момент,  сообщение отклоняются, если в момент  вызова send нет ни одного подписчика (то что увидел в коде, наигрывал).

Такой вопрос, можно ли как-то поменять вот это поведение, когда сообщение не попадает в очередь, если нет агентов.
Просто возможна ситуация, что  кооперация с агентами может завершиться и запустится новая, но сообщения не хочется терять для которых был вызван send  в соответстующий mbox.
   

Yauheni Akhotnikau

unread,
Nov 21, 2019, 2:52:38 AM11/21/19
to SObjectizer
Можно подумать на счет использования mchain-ов вместо mbox-ов. Mchain -- это, по сути, очередь в которую сообщения помещаются даже если никто в этих сообщениях в данный момент не заинтересован.

https://github.com/Stiffstream/sobjectizer/wiki/SO-5.6-InDepth-Message-Chains

Доставать сообщения из mchain-а нужно вручную через receive или select.

Другой возможный вариант -- это вариация на тему retained_mbox из so_5_extra: https://github.com/Stiffstream/so5extra/wiki/so5extra-1.3-Retained-Mbox
Только retained_mbox хранит экземпляр последнего отосланного сообщения, а в вашем случае нужно хранить все сообщения, которые отсылались в mbox в промежутки, когда подписок не было.
Message has been deleted

Дмитрий Николаевич

unread,
Nov 22, 2019, 12:50:39 AM11/22/19
to SObjectizer
Спасибо. По ссылке есть пример 'simple load balancing schema'. Сообщение получит только один из клиентов в данном случае?

Yauheni Akhotnikau

unread,
Nov 22, 2019, 1:06:30 AM11/22/19
to SObjectizer
Спасибо. По ссылке есть пример 'simple load balancing schema'. Сообщение получит только один из клиентов в данном случае?

Только один из клиентов. 
Reply all
Reply to author
Forward
0 new messages