Если есть два слушателя / подписчика, один из которых отвечает на TibRvdTransport.sendRequest(message,timeout)
Если я отправляю сообщение на тему многоадресной рассылки, используя:
TibrvMsg replyMessage = TibRvdTransport.sendRequest (сообщение, время ожидания)
и есть два подписчика, кто фактически отправляет ответное сообщение, и что происходит с другим ответным сообщением?
Я могу только угадать самый быстрый, который отвечает. Но я не могу увидеть это нигде.
1 ответ
Поскольку ваши компоненты отделены, они не знают друг о друге. Rendezvous - pub-sub, что означает, что все подписчики получают все сообщения, опубликованные по темам, на которые они подписаны. Кроме того, Rendezvous использует подход однорангового обмена сообщениями по сравнению с централизованным подходом к пересылке сообщений. Поэтому оба компонента получат сообщение, и оба компонента ответят.
Если это нежелательное поведение, с Rendezvous вы можете использовать распределенную очередь (RVDQ). При таком подходе "планировщик" назначает работу работникам, обеспечивая обработку сообщений только один раз.