Question
ED Coder · Jul 28, 2021

How can I find report of messages processed by production

Is there a way to get a report of how many messages are passing through a production? I am trying to gauge how many messages we process weekly, monthly, and yearly. Also, over specific months.

Would appreciate if someone can guide me on this

We use Cache for Windows 2017.1.3

00
2 0 7 103
Log in or sign up to continue

Thank you Muhammad, will have a look. But our version is the old one not IRIS. 

There's the Activity Monitor, but I don't know whether it was available for 2017.x. It requires configuration, as it is not enabled by default. It starts gathering activity after configuration, so you won't be able to use it to obtain activity/volume history for messages processed through the production prior to setup.

Depending on what needs to be analyzed, the few solutions included in the application may not meet your needs.

In my project, I created specific metrics tables that get the data I wanted. To feed these tables, I created asynchronous processes within the normal operations in Ensemble that collect this data. Remembering that, within the standard Ensemble cycle, messages longer than 7 days are deleted.

Through these tables, which are independent of the Ensemble cycle, it is possible to analyze months and years of data.

Obviously, this consumes disk space.

Thank you Jeffrey as always. We log all our data in the cache so pulling details based on that. 

Hi. This was a few years ago, but we could not find any way to do this in the standard Ensemble set up at the time. The message viewer can be asked the right sort of questions, but then times out as the query takes too long.

For monthly stats we wrote embedded SQL in a class method that we ran at the command prompt. This wrote out the results as CSV to the terminal and once it finished we copied and pasted the various blocks into Excel. Very slow and manual, but only once a month so not so bad. (Our system only purged messages after many months.)

Then we wanted daily numbers to feed into another spreadsheet. So we built an Ensemble service running once a day that ran similar embedded SQL but only for the one previous day of messages. It put the CSV results into a stream in a custom message that went to an operation, that sent then emails out to a user-defined list. Essential bits below. Hope it helps.

    Set today = $ZDATE($H,3)_" 00:00:00"
    Set yesterday = $SYSTEM.SQL.DATEADD("day",-1,today)
    Set tRequest = ##class(xxx.Mess.Email).%New()
    Set tRequest.To = ..SendTo
...etc
    &sql(DECLARE C1 CURSOR FOR
    SELECT
          SUBSTRING(DATEPART('sts',TimeCreated) FROM 1 FOR 10),
          SourceBusinessType,
          SourceConfigName,
          TargetBusinessType,
          TargetConfigName,
          COUNT(*)
        INTO :mDate,...
        FROM Ens.MessageHeader
        WHERE TimeCreated >= :yesterday AND TimeCreated < :today
        GROUP BY...
        ORDER BY...
    )
    &sql(OPEN C1)
    &sql(FETCH C1)
    While (SQLCODE = 0) {
        Set tSC = tRequest.Attachment.WriteLine(mDate_","_...
        &sql(FETCH C1)
    }
    &sql(CLOSE C1)
    Set tSC = ..SendRequestAsync($ZStrip(..TargetConfigName,"<>W"),tRequest) If $$$ISERR(tSC)...

(The CSV in an email was easiest for the target audience at the time. If I did it again, I'd probably look at storing the results in a class and using ODBC to pull the information into Excel. Pretty much as Marcio suggested in his post. But that would have needed firewalls opening up, and complex security for the server involved.)