Если есть два слушателя / подписчика, один из которых отвечает на TibRvdTransport.sendRequest(message,timeout)

Если я отправляю сообщение на тему многоадресной рассылки, используя:

TibrvMsg replyMessage = TibRvdTransport.sendRequest (сообщение, время ожидания)

и есть два подписчика, кто фактически отправляет ответное сообщение, и что происходит с другим ответным сообщением?

Я могу только угадать самый быстрый, который отвечает. Но я не могу увидеть это нигде.

1 ответ

Решение

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

Если это нежелательное поведение, с Rendezvous вы можете использовать распределенную очередь (RVDQ). При таком подходе "планировщик" назначает работу работникам, обеспечивая обработку сообщений только один раз.

Другие вопросы по тегам