blockchain - Corda - 执行具有多个输出状态的流时出现问题
问题描述
我正在尝试执行具有 3000 个输出状态(Java)的 Corda 流,但出现错误:
[Thread-8 (ActiveMQ-IO-server-org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl$4@6a8da5c5)] impl.JournalImpl.run - appendAddRecord::java.lang.IllegalArgumentException: Record is too large to store 18603342 {}
java.lang.IllegalArgumentException: Record is too large to store 18603342
at org.apache.activemq.artemis.core.journal.impl.JournalImpl.switchFileIfNecessary(JournalImpl.java:2915) ~[artemis-journal-2.2.0.jar:2.2.0]
at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendRecord(JournalImpl.java:2640) ~[artemis-journal-2.2.0.jar:2.2.0]
at org.apache.activemq.artemis.core.journal.impl.JournalImpl.access$200(JournalImpl.java:88) ~[artemis-journal-2.2.0.jar:2.2.0]
at org.apache.activemq.artemis.core.journal.impl.JournalImpl$1.run(JournalImpl.java:778) [artemis-journal-2.2.0.jar:2.2.0]
at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) [artemis-commons-2.2.0.jar:2.2.0]
at org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) [artemis-commons-2.2.0.jar:2.2.0]
at org.apache.activemq.artemis.utils.actors.ProcessorBase$ExecutorTask.run(ProcessorBase.java:53) [artemis-commons-2.2.0.jar:2.2.0]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_181]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_181]
为了避免这个问题,我将流程的执行划分为更多步骤,并在每次执行中调用它 n 次(在本例中为 6 次)处理 500 个输出状态。
该解决方案有效,但是有更好/有效的解决方案来解决此问题吗?
先感谢您。
解决方案
此错误表示您尝试发送的消息超出了网络的最大消息大小。
从 Corda 3.x 开始,这个最大消息大小被硬编码为 10MB(10,485,760 字节)。
在 Corda 的未来版本中,网络运营商将能够配置网络的最大消息大小作为网络参数的一部分。
设置最大消息大小的目的是防止大节点通过强制它们处理过大的消息来欺负较小的节点。
推荐阅读
- sql - Laravel 简单的私人对话结构
- excel - 基于单元格内容的 Microsoft Excel VBA 代码范围
- java - 在javafx中将属性绑定到鼠标
- opennms - OpenNMS SNMP 陷阱停止工作 - 如何进一步排除故障
- javascript - 无法从组件访问 Redux 数组状态
- sublimetext3 - 从 Sublime Text 3143 升级到 3176 会导致粗体
- android - 房间数据库插入错误:参数的类型必须是带有@Entity 注释的类或其集合/数组
- python - Leetcode 的两个和错误 __init__() 缺少 2 个位置参数
- sql-server - 如何管理大型 Visual Studio 数据库项目?
- css - CSS 多输入