Очередь сообщений IPC - обнаружение разъединения - PullRequest
0 голосов
/ 11 октября 2019

У меня есть «проблема», которую, кажется, невозможно решить самостоятельно. У меня есть следующие 3 программы:

[   ]<------ [   ] ------>[   ]
[ A ]        [ B ]        [ C ]
[   ] ------>[   ]<------ [   ]

В соответствии с этой схемой, A и B, а также B и C используют очередь сообщений для связи.

B создает очередь сообщенийкоторый содержит сообщение для A. A создайте очередь сообщений, которая содержит сообщение для B. То же самое касается B и C. B создает для C, C для B.

Я выбираю в этих разных очередях сообщений. Например, B, подключитесь к очереди сообщений из C и из A. Он выбирает те 2, чтобы получить сообщение.

Но здесь возникает проблема. Я хотел бы обнаружить из B, если A сбой. И если это так, отключите очередь сообщений и подключитесь позже, когда вернется А.

Я понятия не имею, как это сделать ... select не возвращает, если происходит сбой A (это будет означать, что сбой A и затем«отключить / удалить» его очередь сообщений.

Другая информация в соответствии с комментариями : я использую GNU / Linux и использую функцию «mq _...»

У вас есть идеи? Поставьте таймер на выборку, а затем проверьте, что очередь сообщений все еще существует? Если да, то как? Другая идея?

Спасибо!

...