Ensembleで大量のメッセージを再送信するには
メッセージビューアはメッセージを再送信できますが、大量(>100件)のメッセージを再送信するには適していません。 それを行うには、以下のようなCache Object Scriptコードを使用する必要があります。
{
ClassMethod Resend()
{
//2016-06-15から2016-06-20の間に'FromComponent'から'ToComponent'に送られたすべてのメッセージを再送信
&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には1つのメッセージの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...