第二十一章 开发Productions - ObjectScript Productions - 延迟发送

news2024/12/22 20:59:55

文章目录

  • 第二十一章 开发Productions - ObjectScript Productions - 延迟发送
    • 延迟发送
  • 生成事件日志条目
  • 在 `ObjectScript` 中生成事件日志条目

第二十一章 开发Productions - ObjectScript Productions - 延迟发送

延迟发送

除了同步(等待)和异步(不等待)的直接选择之外,还可以使用称为延迟响应的机制在 IRIS 之外发送消息。

假设一个业务流程希望在 IRIS 之外调用一个动作。它向业务操作发送请求,业务操作执行调用并返回响应。业务流程是任何响应的预期接收者;业务操作只是请求发出和响应进来的方式。如果业务流程同步发出请求,或者如果它发出请求并请求异步响应,业务操作将中继回响应。下图总结了这种机制。

在这里插入图片描述

现在假设从业务流程接收请求的业务操作已被编写为使用延迟响应功能。原始发件人不知道响应将被业务操作延迟这一事实。延迟响应是业务运营开发人员做出的设计决策。如果业务操作确实延迟了响应,那么当原始发送者在延迟期结束时收到响应时,它不知道响应曾经被延迟过。

业务操作通过调用其 DeferResponse() 方法来生成表示原始发送者和原始请求的令牌来延迟响应。业务运营还必须找到一种方法将此令牌传达给外部实体,然后外部实体负责将此令牌包含在对 IRIS 的任何后续响应中。例如,如果外部目的地是电子邮件,业务操作可以在外发电子邮件的主题行中包含令牌字符串。接收此电子邮件的实体可以从请求主题行中提取此令牌,并在响应主题行中使用它。在下图中,项目 t 代表此令牌。

从业务操作延迟请求到原始发送者最终收到响应之间,请求消息的状态为 Deferred。原发送方收到相应响应后,请求消息状态由Deferred变为Completed

Productions中的任何业务主机都可以拾取响应请求的传入事件并将其返回给原始发送者。事件在 IRIS Productions中到达的确切位置取决于Productions的设计;通常,业务服务的任务是接收来自 IRIS 外部的传入事件。接收传入事件的业务主机还必须随事件一起接收延迟响应令牌。然后,业务主机调用其 SendDeferredResponse() 方法,根据传入的事件数据创建适当的响应消息,并将此响应定向到原始发件人。原始发件人在不知道响应如何返回的情况下收到响应。下图显示了一个请求及其延迟响应。

在这里插入图片描述

生成事件日志条目

事件日志是一个表,记录在给定名称空间中运行的生产中发生的事件。 Management Portal 提供了一个显示此日志的页面,它主要供系统管理员使用,但在开发过程中也很有用。 (有关此页面的详细信息,请参阅监控制作。)

事件日志的主要目的是提供诊断信息,在生产运行时出现问题时,这些信息对系统管理员很有用。

IRIS 自动生成事件日志条目,可以添加自己的条目。任何给定事件都是以下类型之一:断言、信息、警告、错误和状态。 (事件日志还可以包括警报消息和跟踪项,将在下一节中讨论。)

要生成事件日志条目:

  1. 确定要记录的事件。

并非所有类型的错误或活动都必须生成事件日志条目。必须选择要记录的事件、要使用的类型以及要记录的信息。例如,事件日志条目应在出现外部物理问题(如网络连接不良)时出现。

事件日志不应记录程序错误;这些应该在产品发布之前解决。

  1. 修改Productions的适用部分(通常是业务主机类)以在 ObjectScript 中生成事件日志条目,如以下小节所述。

重要提示:如果需要主动通知用户某些情况或事件,请使用警报,这将在下一节和定义警报处理器中讨论。

ObjectScript 中生成事件日志条目

在业务主机类或产品使用的其他代码中,可以在 ObjectScript 中生成事件日志条目。为此,请使用以下任一宏。这些宏在 Ensemble.inc 包含文件中定义,该文件自动包含在 IRIS 系统类中:

MacroDetails
$$$LOGINFO(message)写入 Info 类型的条目。在本表的此处和后面的内容中,消息是字符串文字或计算结果为字符串的 ObjectScript 表达式。
$$$LOGERROR(message)写入错误类型的条目。
$$$LOGWARNING(message)写入警告类型的条目。
$$$LOGSTATUS(status_code)根据给定的 status_code 的值,写入一个 ErrorInfo 类型的条目,它必须是 %Status 的一个实例。
$$$ASSERT(condition)如果参数为 false,则写入一个 Assert 类型的条目。 condition 是一个 ObjectScript 表达式,计算结果为 truefalse
$$$LOGASSERT(condition)为参数的任何值写入一个 Assert 类型的条目。 condition 是一个 ObjectScript 表达式,计算结果为 truefalse

下面显示了一个示例,其中包含将静态文本与类属性值组合在一起的表达式:

 $$$LOGERROR("Awaiting connect on port "_..Port_" with timeout "_..CallInterval)

以下示例使用 ObjectScript 函数:

 $$$LOGINFO("Got data chunk, size="_$length(data)_"/"_tChunkSize)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/597316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

9秒被骗245万元?AI火了,骗子也来了!

生成式AI技术,如GPT-4等强大的语言模型的广泛普及,已经逐步开展应用。这种对未来技术的期待之余,不得不面对AI技术可能被滥用的风险,甚至已经有一些犯罪分子已开始巧妙地利用AI技术进行电信诈骗。 当下最积极学习的除了学生&#…

【高危】Apache bRPC <1.5.0 存在任意代码执行漏洞

漏洞描述 Apache bRPC 是C开发、由百度RPC发展而来的工业级 RPC 框架。 该项目受影响版本存在任意代码执行漏洞,由于server.cpp对于用户输入的pid_file使用wordexp展开。 具备bRPC控制权限的攻击者可在bRPC启动时通过控制pid_file参数注入恶意内容(如…

DNS隧道流量分析

1.域名准备 选择哪家的云都没问题,国内云需要实名,不建议使用,这里我选择的TX云,因为之前注册过了,自己拿来做个流量分析不成问题 域名添加解析记录 需要准备自己的vps作为DNS隧道的服务端,且需要添加ns…

.nc文件根据经纬度提取点上数值python

.nc文件根据经纬度提取点上数值python 1、数据集2、代码部分3、完整代码 1、数据集 VOD Climate Archive (VODCA) 数据由维也纳工业大学提供(https://doi.org/ 10.5281/zenodo.2575599)。VODCA是一种空间分辨率为0.25的全球每日V…

【十一】设计模式~~~结构型模式~~~代理模式(Java)

【学习难度:★★★☆☆,使用频率:★★★★☆】 6.1. 模式动机 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起…

网络流量管理系统

网络监控对于当今的组织至关重要,该过程的一个关键方面是分析网络的正常运行时间、可用性、性能和安全性。随着云和物联网技术越来越多地成为现代 IT 环境的一部分,网络管理员必须更加警惕他们授予访问权限的流量,包括确定谁在使用他们的网络…

【十四】设计模式~~~行为型模式~~~中介者模式(Java)

【学习难度:★★★☆☆,使用频率:★★★★★】 3.1. 模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标&#…

提高测试效率5大捷径

1、优先级 测试任务和开发任务一样,都需要进行优先级排序。在测试工作中,优先进行级别高的测试任务,这样能够在无法保障测试周期的前提下,也不会对整体开发进度造成较大的影响。 提高测试效率5大捷径 2、重视测试策略 测试策略的基…

零代码,使用 Dify 两分钟接入企业微信

前置准备 企业微信的管理员权限 一个 Dify 的帐号 一个 Laf 云的帐号 (可选)一个 OpenAI 的 API Key。如果没有,可以使用 Dify 免费提供的 200 次调用机会用于测试。 (可选)在电脑上新建一个 env.txt 的文件&#…

C++进阶 —— 列表初始化(C++11新特性)

目录 一,列表初始化 二,类列表初始化 三,类模板列表初始化 库模板初始化列表实现 模拟模板初始化列表实现 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字已经取代了C98称为C11之前的最新C标准名称&…

神经网络与机器学习

《神经网络与深度学习》 第一章 绪论1.1 人工智能知识结构预备知识顶会论文常用的深度学习框架研究领域 1.2 如何开发AIS芒果机器学习 1.3 表示学习局部表示和分布式表示 1.4 深度学习(Deep Learning) 第一章 绪论 1.1 人工智能 人工智能的一个子领域 神经网络&a…

百度商业AI技术创新大赛火热进行中,携手专家大咖一起创新为更好!

百度商业AI技术创新大赛火热进行中 来自百度、中国人工智能学会 及NVIDIA的专家大咖纷纷送上寄语 希望与充满创新思维的年轻人一起 探讨AI技术的创新应用 挖掘AIGC在商业领域发展的更多可能 开启中国人工智能发展新篇章! -戴琼海- 国务院参事 CAAI理事长 …

分布式锁的应用场景与分布式锁实现(三):基于Zookeeper实现分布式锁

分布式锁的应用场景与分布式锁实现(二):基于Redis实现分布式锁 基于Zookeeper实现分布式锁 ​ 实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。在实现分布式锁…

每日一题——重复的子字符串

每日一题 重复的子字符串 题目链接 注:本题的题解基本建立在KMP算法之上,对KMP算法不太了解的小伙伴可以参考这篇文章KMP算法及其改进图文详解 方法一:移动匹配 我们先来看几个可以由一个字串重复多次构成的主字符串:“aaa”&am…

chatgpt赋能Python-python人脸识别步骤

简介 Python是一种优秀的编程语言,它广泛应用于人工智能、数据科学、Web应用程序开发等领域。其中,人脸识别是Python应用程序中的重要一环。 本文将介绍Python人脸识别的具体步骤,希望对初学者有所帮助。 Python人脸识别步骤 安装必要的库…

销售管理全面指南:职能、流程、目标和工具

销售管理是优化公司销售队伍的过程,以有效利用现有资源来完成交易。对于任何依靠销售来推动收入的企业来说,这是绝对必要的。 销售管理可以细分为三个主要领域:销售运营、销售策略和销售分析。 根据美国营销协会(AMA&#xff…

使用腾讯云短信服务实现Spring Boot短信发送

发送短信 01 注册微信公众号02 注册腾讯云账号03 创建签名和模板第一步 创建签名第二部 创建模板 04 发送短信 01 注册微信公众号 在百度中寻找微信公众平台,并在进入官网后注册。在账号注册过程中,需选择订阅号(个人)。注册成功后,请保存账…

我的浙大MEM提前批面试全流程重点信息梳理

浙江大学MEM已上岸,目前在读,给大家分享下我的备考经验,希望可以帮助到大家。 在确定自己的目标院校后收集相关信息是非常重要的,比如今年计划招多少学生,往年上岸都需要多少分,学费等情况,招考…

Kyligence x 集简云|无代码集成数百款应用,轻松打造数据产品

一站式指标平台 Kyligence Zen 现已支持对接集简云平台,企业无需繁琐的开发工作,即可无代码集成数百款应用,打破数据孤岛、统一数据口径,帮助企业实现数据的协作和分享,轻松进行数据分析、构建数据产品,助力…

腾讯董志强出席全国信安标委“标准周”:数字化转型需要高安全等级架构

2023年5月29日至6月1日,全国信息安全标准化技术委员会(以下简称“信安标委”)2023年第一次“标准周”活动在云南昆明举行。此次活动聚集了全国顶级的网络安全标准专家、学者和业界领袖,共同探讨网络安全标准领域的前沿议题和最佳实…