在Mendix 9 中使用原生多线程

在Mendix 9 中使用原生多线程,第1张

在Mendix 9 中使用原生多线程

“在计算机体系结构中,多线程是中央处理单元 (CPU)(或多核处理器中的单核)在 *** 作系统支持下同时提供多个执行线程的能力。”  

为了解释多线程,我们可以使用人脑进行类比。假设您想一边说话,一边走路,您的大脑为了不让你每次说话都停下来,就会分配资源并同时完成两项工作。这就是多线程。如今,现代编程技术都允许应用程序划分它们的处理时间(也就是大脑),并同时运行多个不同的工作任务。

现在就让Mendix应用程序使用多线程吧!

01 ExecuteMicroflow-InBackground

在Mendix 8和之前的版本中,使应用程序成为多线程的最简单快捷的方法是从市场下载Community Commons函数库并使用名为executeMicroflowInBackground的Java Action。为此,请从微流调用Java Action。该 *** 作需要两个参数才能工作:上下文对象(可以为空)和要调用的微流的名称。

请从微流调用 Java Action

这是针对长时间运行的进程带来的不友好体验所做一个Java Action,并确保这些进程可以在主进程完成时在后台完成。

02 Process Queue

另一种选择是使用Process Queue模块,也可在Marketplace中找到,具体的使用方式可以在参考资料中获取。随着 Mendix 9的发布,使用Process Queue变得更加简单。

03 任务队列 Task Queue

最新的Mendix 9已经把多线程集成在系统层面,Task Queue基于 Process Queue模块,但为了简化开发,它现在包含在Studio pro中,让开发者可以更便捷使用这个功能。

Task Queue有如下几个特点:

  • Task Queue支持多节点集群设置,因此可以在水平扩展的集群环境中使用。
  • Task Queue不要求创建额外的实体,因为微流或Java Action现在可以简单地通过标注的方式,直接放在后台执行。
  • Task Queue尚不支持失败任务的自动重试,但相信不久的将来可以实现这个功能。

如果您想尝试使用任务队列Task Queue,可以通过以下几个步骤完成:

  1. 右键单击项目资源管理器中的模块或文件夹
  2. 选择add other
  3. 单击Task Queue
  4. 输入线程数的值

通过简单的4个步骤,就可以实现系统层面的多线程。现在,当一个微流调用另一个微流或者Java Action时,您都会看到在任务队列中执行它们的选项。如果选中“Execute this Microflow in a Task Queue”,可选择之前创建的队列。当某个微流被调用时,它会在自己的独立线程中执行。

04 知识点分享
  • 线程按顺序流程FIFO(先进先出)执行,但这并不意味着它们会以任何特定顺序执行。和传统Java开发一样,您无法确定微流按特定顺序执行,因此在执行的时候,要确保线程之间没有依赖关系,或者需要等待其他线程的输出结果。
  • 您可以使用的唯一参数类型是Mendix的固有数据类型,包括布尔型、整数/长整型、十进制、字符串、日期和时间、枚举和可以提交的持久实体。
  • 线程将按照系统级权限执行,因此不能在线程的逻辑中使用用户上下文(User Context)。
  • 一个线程只会在它完成任何调用后启动。这意味着它只会在创建线程的微流或 Java *** 作完成后触发。这是因为不可能在事务中间创建新线程。
  • 单个节点的最大线程数为40。
  • 添加的线程越多,服务器上的负载就越大。通常两三个线程就足够了。
  • 一个名为Queue的日志节点专门用于与任务队列相关的所有 *** 作。
  • Marketplace中有一个任务队列助手模块,其中包含用于监控队列的页面和概述。

 参考资料

[1] https://docs.mendix.com/refguide/task-queue#3-monitoring

[2] https://docs.mendix.com/appstore/modules/process-queue

[3] https://docs.mendix.com/refguide/task-queue#process-queue

[4] https://docs.mendix.com/refguide/task-queue

更多信息,请访问以下链接:

Mendix官网:低代码应用开发平台 - 快速高效地构建应用 | Mendix

Mendix中国论坛:Mendix开发者论坛-加入Mendix开发者论坛,一起引领创新。

Mendix行业解决方案:Low-Code Solution Gallery | Customizable Solutions For Every Industry

Mendix平台指南:Low-Code Application Development Platform evaluation Guide | Mendix

Mendix动画展示:Application Development Demos – Mendix Low-Code Platform

感谢阅读!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5523383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存