第二十一章 开发Productions - ObjectScript Productions - 延迟发送
文章目录
- 第二十一章 开发Productions - ObjectScript Productions - 延迟发送
- 延迟发送
- 生成事件日志条目
- 在 `ObjectScript` 中生成事件日志条目
第二十一章 开发Productions - ObjectScript Productions - 延迟发送
延迟发送
除了同步(等待)和异步(不等待)的直接选择之外,还可以使用称为延迟响应的机制在 IRIS 之外发送消息。
假设一个业务流程希望在 IRIS 之外调用一个动作。它向业务操作发送请求,业务操作执行调用并返回响应。业务流程是任何响应的预期接收者;业务操作只是请求发出和响应进来的方式。如果业务流程同步发出请求,或者如果它发出请求并请求异步响应,业务操作将中继回响应。下图总结了这种机制。

现在假设从业务流程接收请求的业务操作已被编写为使用延迟响应功能。原始发件人不知道响应将被业务操作延迟这一事实。延迟响应是业务运营开发人员做出的设计决策。如果业务操作确实延迟了响应,那么当原始发送者在延迟期结束时收到响应时,它不知道响应曾经被延迟过。
业务操作通过调用其 DeferResponse() 方法来生成表示原始发送者和原始请求的令牌来延迟响应。业务运营还必须找到一种方法将此令牌传达给外部实体,然后外部实体负责将此令牌包含在对 IRIS 的任何后续响应中。例如,如果外部目的地是电子邮件,业务操作可以在外发电子邮件的主题行中包含令牌字符串。接收此电子邮件的实体可以从请求主题行中提取此令牌,并在响应主题行中使用它。在下图中,项目 t 代表此令牌。
从业务操作延迟请求到原始发送者最终收到响应之间,请求消息的状态为 Deferred。原发送方收到相应响应后,请求消息状态由Deferred变为Completed。
Productions中的任何业务主机都可以拾取响应请求的传入事件并将其返回给原始发送者。事件在 IRIS Productions中到达的确切位置取决于Productions的设计;通常,业务服务的任务是接收来自 IRIS 外部的传入事件。接收传入事件的业务主机还必须随事件一起接收延迟响应令牌。然后,业务主机调用其 SendDeferredResponse() 方法,根据传入的事件数据创建适当的响应消息,并将此响应定向到原始发件人。原始发件人在不知道响应如何返回的情况下收到响应。下图显示了一个请求及其延迟响应。

生成事件日志条目
事件日志是一个表,记录在给定名称空间中运行的生产中发生的事件。 Management Portal 提供了一个显示此日志的页面,它主要供系统管理员使用,但在开发过程中也很有用。 (有关此页面的详细信息,请参阅监控制作。)
事件日志的主要目的是提供诊断信息,在生产运行时出现问题时,这些信息对系统管理员很有用。
IRIS 自动生成事件日志条目,可以添加自己的条目。任何给定事件都是以下类型之一:断言、信息、警告、错误和状态。 (事件日志还可以包括警报消息和跟踪项,将在下一节中讨论。)
要生成事件日志条目:
- 确定要记录的事件。
并非所有类型的错误或活动都必须生成事件日志条目。必须选择要记录的事件、要使用的类型以及要记录的信息。例如,事件日志条目应在出现外部物理问题(如网络连接不良)时出现。
事件日志不应记录程序错误;这些应该在产品发布之前解决。
- 修改
Productions的适用部分(通常是业务主机类)以在ObjectScript中生成事件日志条目,如以下小节所述。
重要提示:如果需要主动通知用户某些情况或事件,请使用警报,这将在下一节和定义警报处理器中讨论。
在 ObjectScript 中生成事件日志条目
在业务主机类或产品使用的其他代码中,可以在 ObjectScript 中生成事件日志条目。为此,请使用以下任一宏。这些宏在 Ensemble.inc 包含文件中定义,该文件自动包含在 IRIS 系统类中:
| Macro | Details |
|---|---|
$$$LOGINFO(message) | 写入 Info 类型的条目。在本表的此处和后面的内容中,消息是字符串文字或计算结果为字符串的 ObjectScript 表达式。 |
$$$LOGERROR(message) | 写入错误类型的条目。 |
$$$LOGWARNING(message) | 写入警告类型的条目。 |
$$$LOGSTATUS(status_code) | 根据给定的 status_code 的值,写入一个 Error 或 Info 类型的条目,它必须是 %Status 的一个实例。 |
$$$ASSERT(condition) | 如果参数为 false,则写入一个 Assert 类型的条目。 condition 是一个 ObjectScript 表达式,计算结果为 true 或 false。 |
$$$LOGASSERT(condition) | 为参数的任何值写入一个 Assert 类型的条目。 condition 是一个 ObjectScript 表达式,计算结果为 true 或 false。 |
下面显示了一个示例,其中包含将静态文本与类属性值组合在一起的表达式:
$$$LOGERROR("Awaiting connect on port "_..Port_" with timeout "_..CallInterval)
以下示例使用 ObjectScript 函数:
$$$LOGINFO("Got data chunk, size="_$length(data)_"/"_tChunkSize)
相关文章:
第二十一章 开发Productions - ObjectScript Productions - 延迟发送
文章目录 第二十一章 开发Productions - ObjectScript Productions - 延迟发送延迟发送 生成事件日志条目在 ObjectScript 中生成事件日志条目 第二十一章 开发Productions - ObjectScript Productions - 延迟发送 延迟发送 除了同步(等待)和异步&…...
用vue-full-calendar实现酒店预定管理展示
文章目录 前言一、关于vue-full-calendar二、使用步骤1. 引入库2. 使用库3. 开始编码4. 实际效果图展示5. 点击弹窗展示6. 弹窗展示效果图 总结 前言 近些天有位做酒店业务朋友问到我,有没有前端比较好用的预定日历查看插件,实际上我也没有研究过&#…...
DirectX12环境配置(1)
开发环境:visual studio 2022 第一种配置DirectX12环境得方式。首先创建一个c得空项目,然后创建一个main.cpp文件。把下面这串代码放进去,先不用管这串代码什么意思,后面会逐行逐句得讲解,因为我们创建得是空项目&am…...
Go-异常处理(defer recover panic)
系列文章目录 提示:goi语言基础文章 GO-异常处理 文章目录 系列文章目录前言一、关键字含义defer /recover 实现异常捕获和处理应用场景deferrecoverpanic 二、实例实例讲解上述几种情况 总结 前言 提示:这里可以添加本文要记录的大概内容: …...
【完美解决】mysql启动不了:本地计算机上的MySQL服务启动后停止
本文基于mysql8.0,5.7也可以参考 navicat 突然莫名其妙连不上mysql 查看服务,也启动不了,手动启动出现错误: 本地计算机上的MySQL服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止 20230525更新! 先…...
C++ Qt 项目设计:基于C++与Qt的跨平台定时关机/关屏应用开发
基于C与Qt框架的定时关机与关屏应用开发全攻略 (一) 项目概述 (Project Overview)1.1 项目需求解析 (Analyzing the Project Requirements)1.2 选择技术栈 (Choosing the Tech Stack)1.3 功能概览 (Function Overview) (二) 设计思路 (Design Thinking)2.1 系统架构设计 (Syste…...
Python新技术和趋势:如何应对Python生态的变化和发展趋势
第一章:引言 Python作为一门简洁、优雅且易于学习的编程语言,一直以来都备受开发者的喜爱。它拥有强大的生态系统和活跃的社区,使得Python在各个领域都有广泛的应用。然而,随着时间的推移,Python生态系统也在不断演变…...
Flutter 又一元老离职,感谢 Tim 这些年的付出
前天在 insiders 收到 Tim Sneath 的离职邮件时感觉很震惊,因为他绝对是 Flutter 团队的元老级人物,几乎每次一次 Flutter 版本发布和社区活动都有他的身影,可以说他是我的 Flutter 领路人之一。 Tim 是在 2017 加入 Flutter 团队࿰…...
C++学习笔记3:sort和priority_queue的比较器重载
1 sort 三种方法 1. 直接重载函数 #include <vector> #include <memory> #include <vector> #include <queue> #include <iostream> #include <algorithm>using namespace std;class Node{ public:int value;Node(){value 0;};explici…...
Java之旅——Mybatis
Mybatis 是一个基于 Java 的 ORM(Object-Relational Mapping),用于 Java 应用程序的持久层框架,它将在 Java 对象和数据库关系之间建立一个映射。Mybatis 的作用主要是简化 SQL 语句的编写和维护,以及减少代码中的冗余…...
抽奖中的分布式锁应用
开发抽奖时遇到的分布式锁问题,特此记录一下几种实现方案 背景 开发中遇到个抽奖需求,会根据当前奖池内道具数量随机道具并发送给用户。这里面涉及到超发的问题,需要使用到分布式锁,特此记录一下常用的几种方案。 “超发”&#…...
项目总结 车牌识别
代码贴:OpenCV实战5 车牌号识别_opencv车牌字符识别_爱钓鱼的歪猴的博客-CSDN博客 目录 1、效果 2、代码思路 0、准备车配字符模板图片以及字符文件 1、对整图进行预处理 得到突出车牌的cany边缘图 2、车牌字体联通在一起,形成一个区域 3、筛选出车…...
一台服务器通过apache安装多个web应用
当我们只有一台linux服务器资源但有创建多个网站的需求时,我们可以通过安装一个网站服务器Apache进行搭建,此次服务器使用Centos 7 下面分别介绍一个域名多个端口和多个域名用Apache来搭建多个网站的操作过程。 一、使用apache 服务器 (一…...
网络连通性测试
ping 在Linux上,你可以使用Shell脚本编写一个for循环来ping一个网段的地址。下面是一个简单的示例: #!/bin/bashsubnet"192.168.0"for ((i1; i<255; i)); doip"$subnet.$i"ping -c 1 -W 1 $ip >/dev/null 2>&1if [ $…...
AntDB-S流式数据库体验
本文作者:彭冲老师,上一篇彭老师体验了亚信刚发布的社区版AntDB-T数据库,文章如下: AntDB-T交易型数据库体验 本文继续体验AntDB-S流式数据库的,AntDB-S目前还未开放社区版,可以联系AntDB小助手进行体验。…...
CentOS 和 Windows 上添加和删除路由
在 CentOS 上添加和删除路由 要在 CentOS 上添加和删除路由,你可以使用 ip 命令或修改网络配置文件。以下是使用 ip 命令的方法: 添加路由: ip route add <目标网络> via <网关> dev <接口>例如: ip route add 192.168.10.0/24 via 192.168.1.1 dev eth…...
2023年电大秋季招生截止日期 什么时候开始报名
2023年电大网上报名时间为3月份和9月份截止报考,电大每年可以报考两次,春季开始报名时间为12月份左右开始,秋季报名时间预计在6月份左右开始。 2023电大网上报名时间是什么时候 电大报名分为春季和秋季两个季节,一般春季招生时间为…...
滑动窗口问题
给定一个大小为 n≤106 的数组。 有一个大小为 k的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: 该数组为 [1 3 -1 -3 5 3 6 7],k为 3。 窗口位置最小值最…...
电子合同网页预览盖章效果实现
电子合同在现在应用越来越广,需求也就随之产生。 本篇文章主要记录两种网页盖章效果实现方式,自己记录一下, 也给需要的人提供一点思路和帮助。 效果 目录 JqueryCSS实现 原理 1.设置印章图片并隐藏 2.标记盖章位置元素 3.获取目标元素位…...
棋盘覆盖问题
文章目录 棋盘覆盖程序设计程序分析棋盘覆盖 【问题描述】 在一个2k x 2k ( 即:2^k x 2^k )个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方…...
2026苹果芯片级数据恢复:揭秘唯一原厂技术真相
在数字生活高度依赖移动设备的今天,数据安全已成为每位用户的核心关切。尤其是苹果生态用户,当遭遇设备无法开机、系统崩溃或物理损坏时,“苹果芯片级数据恢复”便成为最后的一线希望。然而,市面上众多宣称“原厂技术”的服务商&a…...
Claude Code SubAgents 配置实战:4个现成配置,复制就能用
用 Claude Code 做项目有个烦人的事:上下文窗口不够用。 让它查一下某个模块的实现逻辑,它把 20 个文件的内容全塞进对话里。查完之后你说"好,现在改这个函数",它告诉你上下文快满了,要不要压缩。 上周我重构…...
2026年降AI工具处理速度横评:五款主流工具一万字论文处理时长完整数据报告
2026年降AI工具处理速度横评:五款主流工具一万字论文处理时长完整数据报告 拿同一篇论文,用三款工具分别处理,记录了完整检测数据。 结论先说:嘎嘎降AI(www.aigcleaner.com)效果最稳,价格也最…...
defx.nvim 会话管理指南:保存和恢复文件浏览器状态
defx.nvim 会话管理指南:保存和恢复文件浏览器状态 【免费下载链接】defx.nvim :file_folder: The dark powered file explorer implementation for neovim/Vim8 项目地址: https://gitcode.com/gh_mirrors/de/defx.nvim defx.nvim 是一款为 neovim/Vim8 打造…...
AI给组内同事的脚本能力价值打了1折!
以前一个做了七八年前端设计的工程师,遇到一个简单的VCD波形解析需求,第一反应可能是是找工具组的人或者脚本能力强的人帮忙。这个场景挺普遍的,只是大家都不太好意思说出来。现在有个概念叫 Vibe Coding,核心是借助AI工具&#x…...
Unity新手第一课:从创建立方体理解场景驱动开发
1. 这不是“Hello World”,而是你和Unity第一次真正握手很多人点开Unity,新建一个空项目,盯着灰蒙蒙的Scene视图发呆——光标悬停在空白画布上,不知道该点哪里,更不知道点下去会发生什么。我带过几十个零基础学员&…...
QQ音乐加密音频一键解密:qmc-decoder让你的音乐重获自由 [特殊字符]
QQ音乐加密音频一键解密:qmc-decoder让你的音乐重获自由 🎵 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾有这样的经历?从QQ音…...
天赐范式第53天:当伙伴没有上下文的时候——说我皮肤好~算子包装
我是第一天就开始包装算子用来算CFD的吗,这套技术理论不是多个领域模拟击穿的吗?没发论文就说没发论文,别扯没用的~谁生下来就会叫爸爸呀!伙伴:兄弟,我建议认栽,切回v27 MAC版:bashd…...
FPGA与机器学习协同加速量子点自动调谐:原理、实现与性能分析
1. 项目概述:当FPGA遇上机器学习,量子点调谐的“自动驾驶”时代在量子计算实验室里,调谐一个量子点器件进入单电子态,是每个实验物理学家都绕不开的“苦差事”。这活儿有多磨人?你得坐在仪器前,手动调节两个…...
国内两大门派,黑马和尚硅谷,学会两个门派的本领,成为大侠
国内两大门派,黑马和尚硅谷,学会两个门派的本领,成为大侠 一、我的理解 国内两大门派,黑马和尚硅谷,学会两个门派的本领,成为大侠。 黑马 Java 学习路线图: 黑马 Java 学习路线图 尚硅谷 Jav…...
