Published on InterSystems Developer Community (https://community.intersystems.com)

主页 > 如何在 Ensemble 中重发大量消息

文章
Tete Zhang · 一月 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...

#Code Snippet #Ensemble

源 URL:https://cn.community.intersystems.com/post/%E5%A6%82%E4%BD%95%E5%9C%A8-ensemble-%E4%B8%AD%E9%87%8D%E5%8F%91%E5%A4%A7%E9%87%8F%E6%B6%88%E6%81%AF