文章
· 一月 29, 2023 阅读大约需 1 分钟

如何在 Ensemble 中重发大量消息

消息查看器可以重新发送消息,但不适合重新发送大量消息(>100)。为此,您应该使用如下的Object Script代码:

Class Sample.Resender Extends %RegisteredObject
{

ClassMethod Resend()
{
//Resend all messages sent from 'FromComponent' to 'ToComponent' between 2016-06-15 and 2016-06-20
&sql(DECLARE C1 CURSOR FOR
 SELECT ID INTO :id FROM Ens.MessageHeader
 WHERE SourceConfigName='FromComponent' AND TargetConfigName='ToComponent'
 AND TimeCreated BETWEEN '2016-06-15' AND '2016-06-20')

&sql(OPEN C1)
&sql(FETCH C1)

set tSC $$$OK

while (SQLCODE = 0) {
//id holds the id for one message. Resend it
set tSC ##class(Ens.MessageHeader).ResendDuplicatedMessage(id)
quit:$$$ISERR(tSC)
&sql(FETCH C1)
}

&sql(CLOSE C1)
quit tSC
}

}

您还可以向其中添加代码,例如不同的消息筛选条件、更好的错误检查逻辑、在出现问题时从重发列表中断处重新启动的代码等。

以下是嵌入式 SQL 和 Ens.MessageHeader 方法 ResendDuplicatedMessage 的文档:

http://docs.intersystems.com/ens20161/csp/docbook/DocBook.UI.Page.cls?KE...

http://docs.intersystems.com/ens20152/csp/documatic/%25CSP.Documatic.cls...

讨论 (0)1
登录或注册以继续