1 Introdcution
The qRFC (queued Remote Function Call) is an extension of the tRFC. It allows you to serialize tRFC calls using a queue. The tRFC call is preceded by function module TRFC_SET_QUEUE_NAME, which starts the serialization. The calls are then actually dispatched by a tRFC call.
qRFC(排队远程函数调用)是 tRFC 的扩展。它允许您使用队列对 tRFC 调用进行序列化。
tRFC 调用之前需使用函数模块 TRFC_SET_QUEUE_NAME,该函数模块启动序列化过程。然后,这些调用实际上是通过 tRFC 调用进行分发的。
2 Detail
The qRFC can be made with an outbound queue (serialization at the calling application) and also an inbound queue (serialization at the called application).
qRFC 可以通过出站队列(在调用应用程序中进行序列化)和入站队列(在被调用应用程序中进行序列化)来实现。
Scenario 1: tRFC
This scenario is appropriate is the data being sent is independent of each other. A calling application (client) in system 1 uses a tRFC connection to a called application (r server) in system 2. In this scenario, data is transferred by tRFC, meaning that each function module sent to the target system is guaranteed to be executed once only. You cannot define the sequence in which the function modules are executed, nor the time of execution. If an error occurs during the transfer, a batch job is scheduled, which sends the function module again after 15 minutes.
Scenario 2: qRFC with Outbound Queue
In this scenario, the sending system uses an outbound queue to serialize the data being sent. This means that mutually dependent function modules are placed in the outbound queue of the sending system. When the data is sent, the exact order is kept to, and the calls are sent to the target system exactly once in order. Exactly Once In Order).
Note Note
The server system coding does not need to be changed in order to process qRFC calls. However, it must be tRFC enabled.
Scenario 3: qRFC with Inbound Queue (& Outbound Queue)
In this scenario, as well as an outbound queue in the sender system (client), there is also an inbound queue in the target system (server). If a qRFC with inbound queue exists, this always means that an outbound queue exists in the sender system.
The inbound queue only processes as many function modules as the system resources in the target system (server) at that time allow. This prevents a server being blocked by a client. A scenario with just one inbound queue in the server system is not possible, since the outbound queue is needed in the client system in order to set the order and to prevent individual applications from blocking all work processes in the client system.
场景1:tRFC
在这种情况下,如果发送的数据彼此独立,那么这种情况是合适的。系统1中的调用应用程序(客户端)使用 tRFC 连接到系统2中的被调用应用程序(服务器)。在这种情况下,数据通过 tRFC 进行传输,这意味着发送到目标系统的每个函数模块都保证只执行一次。您无法定义执行函数模块的顺序,也无法定义执行时间。如果在传输过程中发生错误,将安排一个批处理作业,在15分钟后再次发送函数模块。
场景2:带有出站队列的 qRFC
在这种情况下,发送系统使用出站队列对要发送的数据进行序列化。这意味着互相依赖的函数模块被放置在发送系统的出站队列中。当数据被发送时,确保保持确切的顺序,并且调用以确切的顺序仅一次发送到目标系统(Exactly Once In Order)。
注意
为了处理 qRFC 调用,服务器系统的编码无需更改。但必须启用 tRFC。
场景3:带有入站队列(和出站队列)的 qRFC
在这种情况下,发送系统(客户端)中除了出站队列外,目标系统(服务器)还有一个入站队列。如果存在带有入站队列的 qRFC,这始终意味着发送系统中存在出站队列。
入站队列仅处理目标系统(服务器)在那个时刻允许的系统资源数量的函数模块。这可以防止服务器被客户端阻塞。在服务器系统中只有一个入站队列的情况是不可能的,因为在客户端系统中需要出站队列来设置顺序,并防止个别应用程序阻塞客户端系统中的所有工作进程。
3 Summary
监控管理
SMQS:QOUT 出站调度程序管理
配置 QOUT Scheduler 的资源(指定用于将 LUW 发送到特定目标的工作进程数,控制资源消耗。)
注册、注销和排除目的地
为 RFC 目标指定登录数据
优化性能
显示管理数据
SMQR : 管理 QIN 入站调度程序
SMQ1:出站队列的 qRFC 监视器
检查队列状态
重新启动阻塞的队列
测试 qRFC 连接
SMQ2 - 入站队列的 qRFC 监视器。