I’ve started reading on the technology options for real-time synchronization and will appreciate any advice from professionals.
Thanks Thomas for suggestion to use a timestamp replication activity in Lotus Enterprise Integrator. I see the following issues with this approach:
Replication activity cannot work in near-real time (which is our requirement); the best we could do is to use it in conjunction with a Polling activity on schedule.
Replication activity scans full result sets from both connections. This is not scalable for large result sets. We would like to have scalable near-real time synchronization, thus we would prefer different mechanism (e.g. triggers, scraping transaction log etc.) that do not require full scan every time.
It requires a connector to (our) external system. Existing Domino connectors (DB2, File, Notes, ODBC) are data-oriented, and our requirement is to do synchronization not in the database layer, but in the application layer. Thus we would be interested in a service-oriented connector (SOAP, CORBA, plain TCP or like), which are not available. I’ve seen in Lotus documentation references to “IBM Lotus Domino Connector Toolkit” but could not find it. Is there a way to write a custom connector?
From what I’ve learned so far, I see two potential approaches for near-real time synchronization from Domino to external system (one way):
Use LEI virtual field activities. Since they recast on create, update and delete events on Notes documents, we could plug into them and send all changes to our system.
Is it a valid approach?
Will we get changes in all cases, whether they are done through Notes UI, Web UI or a server application?
Are these activities transactional? E.g. if create failed (say, because of security restrictions), will we still get it?
This approach also requires a connector to our system – the same issue as with replication activity.
Use C API Extension Manager to register a callback function to receive all create, update and delete notification events. This callback function would do minimal processing and send notification to our system, which would query Domino server for details.
Which of these ways would you recommend? Are there any other ways to receive near-real time notification on Notes document changes?
I see many potential approaches to synchronize our changes to Domino. Our application is J2EE, thus we could easily use:
Domino Java classes
The Domino driver for JDBC
WebDAV
What approach would be better to efficiently:
• Send small chunks of changes to Domino in near-real time
• Send large chunk of data (snapshot) to Domino
• Query Domino server for changes in particular documents (e.g. upon receiving notification from C API callback)
I would try using a timestamp replication activity in Lotus Enterprise Integrator. Plain replication activities are one-way while timestamp activities are two-way.
About 8 years ago I was using Domino C API that would allow hooking into the Domino server processing inserts / updates / deletes. Is it still around? Does Domino have Java API? Does it support WebDAV?