наше приложение использует Corda V2.0 в настоящее время и развернуто на выделенном сервере, мы используем 3 нотариуса с настроенным RAFT, но когда есть состояние ввода транзакции, в журнале обнаружена ошибка ниже
messaging.NodeMessagingClient.sendWithRetry - Reached the maximum number of retries (3) for message ClientMessageImpl
И после прочтения кода FinalityFlow мы обнаружили, что эта ошибка должна возникать на шаге "session.sendAndReceiveWithRetry (tx)" приведенных ниже кодов в NotaryFlow.kt
val response = try {
val session = initiateFlow(notaryParty)
if (serviceHub.networkMapCache.isValidatingNotary(notaryParty)) {
subFlow(SendTransactionWithRetry(session, stx))
session.receive<List<TransactionSignature>>()
} else {
val tx: Any = if (stx.isNotaryChangeTransaction()) {
stx.notaryChangeTx
} else {
stx.buildFilteredTransaction(Predicate { it is StateRef || it is TimeWindow || it == notaryParty })
}
session.sendAndReceiveWithRetry(tx)
}
} catch (e: NotaryException) {
if (e.error is NotaryError.Conflict) {
e.error.conflict.verified()
}
throw e
}
Мы пыталисьпропингуйте друг друга между узлом, нотариусом 1, 2 и 3 с портом RPC, все они слушают, но из сообщения об ошибке мы не уверены, что это вызвано тем, что связь / обмен сообщениями не могли работать между узлом и нотариусом.Узлы нотариусов работают, и в их журналах нет ошибок.
Итак, мы хотели бы знать, может ли пинг друг с другом с портом RPC гарантировать, что обмен сообщениями будет хорошо работать между ними?Существует ли какой-либо подход, позволяющий проверить, могут ли сообщения между двумя узлами (узлом и нотариусом) отправляться и приниматься надлежащим образом?Большое спасибо.