2015-02-11 3 views
0

если я отправляю сообщение на тему группового использования:Если есть два слушателей/подписчики которых один отвечает на TibRvdTransport.sendRequest (сообщение, тайм-аут)

TibrvMsg replyMessage = TibRvdTransport.sendRequest (сообщение, тайм-аут)

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

Я могу только догадаться, какой из них отвечает. Но я не вижу этого документально.

ответ

2

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

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

+0

Я могу работать с поведением, но мне кажется странным, что в теории любой ответ после самого быстрого просто теряется. Когда я впервые использовал метод, я не ожидал поведения pub-sub, потому что в java, по крайней мере, если вы вызываете вызов метода, вы ожидаете только одного ответа. – dasPing