Processing multiple messages as one package optimizes overall performance in PI by reducing load times, database processing and context changes between the different pipeline steps. All of these are done without effecting the design, development or monitoring of the messages.
Note: The information provided here is based PI 7.1 SPS4.
To enable packaging in your PI systems, the patch level must be at least PI 7.0 SP12. Otherwise the systems can only process single messages. Non-central Adapter Engines, in particular, must be at this level. If not, you must disable sending of packages to these Adapter Engines.
As asynchronous messages arrive from a sender, they are stored in a queue. In the past, the qRFC scheduler took a single message from the queue and processed it. The qRFC scheduler is now able to process a set of messages (a package) in one LUW. Depending on the number and size of the messages in the queue, this procedure improves performance considerably.
The performance gain are from:
Note: This is just an example, not a recommendation on how a packaging should be configured for such a scenario.
Category: RUNTIME
Parameters: PACKAGING
Current Value: 1 (for active)
As you can see, the PI 7.1 system I am using, the default setting is "active" or "1". For PI 7.0, the default is "inactive" or "0".
Packaging is turned on by default on all PI 7.1 systems. There is no reason not to use it, since it does not effect the processing or monitoring of messages. It can only improve performance.
Configuration Type: any name (in this example, the name is PACKDEMO)
Description: any text to describe the configuration type
Wait Time: the time in seconds to wait if the queue does not contain the number of messages to be packaged as configured in "Number" (in this example, the wait time is 60 seconds)
Number: the number of messages per package (in this example, we want each package to include a maximum of 30 messages)
Maximum Package Size: the maximum size of the package (in this example, we do not want the package size to exceed 2MB)
With the above configuration the packaging process is as follow:
If you notice the DEFAULT configuration type in the above screeshot, the "Wait Time" is set to "0" or none. This means that messages will be collected into a package from the queue, up to 100 messages, and will be released immediately with no timeout, even if the 100 messages/package has not been reached.
Use tx: SXMSIF -> New Entries (F5), create a new entry:
Sender/Receiver ID: any name (in this example, the name is PACKAGE_DEMO)
Description: any text
Service: Business Service used in the Integration Directory's Receiver Determination (in this example, the business service is BLService)
Interface Name: Interface Name used in Receiver Determination (in this example, the interface name is TestValidSource_Async_OUT)
Interface Namespace: Interface Namespace used in the Receiver Determination (in this example, the interface namespace is http://test.com)
Use tx: SXMS_BCONF
Then,
In the subsequent screen, click to "Change" mode:
Next, click on "New Entries" or F5:
Using the the drop-down selection, populate the values for "Possible Application", "Sender/Receiver ID", and "Configuration Type":
Finally, save the configuration. You will be requested for a transport change list.
When the file sender communication channel is activated, we will see the following in tx: SXI_MONITOR:
As you can see, for the 1st minute, all the messages are waiting to be processed. After 60 seconds, the packages will be created and processed. There is no change to the monitoring of each of the individual messages in SXI_MONITOR.
Then, bring up the monitor by using tx: XMSPKSTATMON
When executed, we get the following screen:
Double-click on the row for more detailed view:
Also, click on "Display Events (F6)" for more packaging information:
Packaging Info: