You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Corda V2.0创建新交易时出现消息重试超限问题求助

Troubleshooting Corda 2.0 Transaction Delivery Failure with Raft Notary Cluster

Let’s dive into the issue you’re facing: your sender node hits max retries when sending a transaction, the receiver confirms the attachment was stored but has no transaction processing logs, and none of your 3 Raft notaries show any trace of the transaction. Here are targeted steps to diagnose and resolve this:

1. Validate Peer Connectivity & Transaction Routing

  • First, confirm the sender node has the correct address for the receiver (internal.peers.4qWch9xxxV). Run this in the Corda shell to check network parameters:
    run networkParameters
    
    Make sure the receiver’s node ID is properly listed in the peers or notaries section (depending on your network setup).
  • Test direct network connectivity between sender and receiver on the Corda P2P port (default 10002) using:
    nc -zv <receiver-node-ip> 10002
    
    If this fails, work with your ops team to unblock ports or fix DNS/resolution issues.

2. Investigate Attachment vs. Transaction Payload Mismatch

The receiver gets the attachment but no transaction logs—this suggests the transaction payload might not have been bundled correctly, or the receiver discarded it before processing:

  • On the sender, verify the transaction was built with the correct attachment. List attachments via the shell and cross-reference the hash with your transaction builder code:
    run listAttachments
    
  • Enable debug logging for the receiver’s messaging component by adding this to log4j2.xml:
    <Logger name="net.corda.node.messaging" level="DEBUG"/>
    
    This will show detailed incoming message logs, including why the transaction payload might have been rejected.

3. Audit Raft Notary Cluster Integration

Since none of the notaries have the transaction, it likely never reached the cluster or notary selection failed:

  • Ensure your transaction builder uses the Raft notary service ID, not an individual node ID. In code, fetch the notary like this:
    val notary = serviceHub.networkMapCache.notaryIdentities.first { it.name.organisation == "YourRaftNotaryService" }
    
  • Check the sender’s logs for errors related to NotarySelectionService or RaftNotaryClient—these will indicate if notary selection failed.
  • Verify the Raft cluster is healthy by running this on any notary node:
    run raftClusterStatus
    
    Confirm all 3 nodes are in FOLLOWER or LEADER state, with no ongoing leader election issues.

4. Check Message Redelivery & Deduplication

The sender’s warning mentions _AMQ_DUPL_ID, so message duplication handling might be interfering:

  • Review the sender’s node.conf for custom redelivery/deduplication settings. Temporarily revert messaging.redelivery.max-retries to the default (3) if you’ve modified it.
  • Check the receiver’s Artemis broker logs (logs/artemis.log) for entries linked to message ID dd1d6efb-dd71-4d34-9686-fecdb8d72671—this will show if the message was rejected due to invalid payload, missing permissions, or broker-level issues.

5. Validate Permissions & Flow Logic

  • Ensure both sender and receiver nodes have the necessary permissions to send/receive transactions. Double-check the permissions section in their node.conf files.
  • If using a custom flow, verify you’re correctly calling send() or initiateFlow() for both the receiver and notary. A missing flow initiation step could prevent the transaction from reaching intended parties.

After working through these steps, you should be able to narrow down whether the issue stems from network blocks, payload errors, cluster health, or flow logic gaps. If you uncover specific log snippets or errors, feel free to share them for deeper analysis!

内容的提问来源于stack exchange,提问作者Javier Garcia Lozano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:55:32