云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

数据库_阳光互联云主机_年度促销

小七 141 0

数据库_阳光互联云主机_年度促销

这个博客是一个系列的一部分,它将帮助集成开发人员正确地解决非功能方面的问题,物联网门锁,如资源消耗、性能和可靠性。本系列之前的贡献是在Groovy脚本中流化XMLSlurper输入。

此贡献与Groovy脚本有关,因为它们用于集成流的脚本步骤。它关注由于意外创建绑定变量而导致的潜在问题,如下所述。

在Groovy编程语言中可以以类型化或非类型化的方式定义变量。

类型化定义的示例:

非类型化定义的示例:

对于Groovy脚本,好评返现,国内大数据,还有第三种类型的定义:

这意味着名称被定义为所谓的绑定变量。groovyapi文档中对绑定的定义如下:"表示脚本的变量绑定,可以从script对象外部进行更改,也可以在脚本外部创建并传递到脚本中。"。绑定变量的一个例子是messageLogFactory,它隐式地传递到您的脚本中,并允许您写入消息处理日志。

现在可能发生的情况是,您只是忘记了变量定义中的"def"或类型,建站论坛,因此它意外地成为绑定变量。这可能会导致一些微妙的问题,这些问题可能会影响消息处理,即使您的脚本似乎按预期工作。这些问题有两个:

一方面,该变量的生存期将更长:当以"def"为前缀的局部变量或相应类型在脚本执行完成后立即进行垃圾回收时,绑定变量将保留在内存中,直到集成流取消部署或重新部署。如果为绑定变量分配了大量内存,则这是有问题的。例如,如果大型邮件正文或邮件附件存储为java.lang.String文件在绑定变量中,这最终可能导致java.lang.OutOfMemoryError错误另一方面,由于绑定变量在脚本执行之间共享,因此可能会发生意外的交互,它会影响消息处理并且很难追踪。注意绑定变量不是线程安全的,正如groovyapi文档中指出的:"绑定实例不应该在多线程上下文中使用。"

通过这个博客,我们希望让您知道不鼓励创建绑定变量的事实,以及与意外创建绑定变量相关的风险,并建议您注意被遗忘的"def"关键字或类型声明。

本系列的下一个贡献是如何防范巨大的消息。

,服务器 云服务器