How to persist the messages on Adapter engine?
I have migrated to PI 7.3 from XI 3.0
Everything is working fine but client wants to know why there is inconsistency between the Messages in IE and AE(say for a particular business service)
I researched this issue and found that inconsistency will be due to some messages are residing on the AE Channel log.In the old system of XI 3.0, the message log on communication channels is almost a week , but on new PI 7.3 system, I can find only the messages not more than one day old. Can you guys please let me know how to change the time duration for logging the messages on channel?
Thanks in advance.
Vadim Klimov replied
If I understood you correctly, the question is how to increase retention period of messages in Adapter Engine - so that they are persisted for a longer time period and you can see messages that were processed in Messaging System older than one day ago.
Here, let's split this into two areas - retention period for asynchronous and for synchronous messages (I'm not sure which one is relevant for your scenario, so I will describe both).
Asynchronous messages. Retention period is adjusted using properties xiadapter.inbound.persistDuration.default (for inbound messages) and xiadapter.outbound.persistDuration.default (for outbound messages) of J2EE service XPI Adapter: XI (com.sap.aii.adapter.xi.svc). Values of both of them are in milliseconds, the default value is 86400000 which is exactly 24 hours. Please note that in addition to setting these properties, respective archiving and deletion jobs periodicity should be checked in Adapter Engine.
Synchronous messages. Synchronous messages are not persisted in database and are only stored in-memory of the Message Store - here total amount of stored messages matters (only last X messages are stored). Amount of synchronous messages that are kept in Message Store is regulated using property messaging.syncMessageRemover.messageCount of J2EE service XPI Service: Messaging System (com.sap.aii.af.ms.svc). Each given period of time (regulated by property messaging.syncMessageRemover.checkInterval (in minutes) of the same J2EE service), amount of syncronous messages kept in Message Store is counted and corresponding messages are cleaned out of it by the respective thread (so, speaking differently, this property specifies a sleep time for this thread). Please note here that in the time period between neighbouring checks, there can be a case when amount of synchronous messages is more than messaging.syncMessageRemover.messageCount: e.g. in case of high load or large value of messaging.syncMessageRemover.checkInterval.