Using the MPGW POP Poller Front Side Handler
msiebler 2700005RPQ Visits (5432)
A little used feature of the IBM WebSphere DataPower Appliances XI52 & XB62 is the MPGW POP FSH (Multi-Protocol Gateway - Post Office Protocol - Front Side Handler).
This FSH can pull (or poll) mail messages from a POP server to be processed by the MPGW or a B2BGW.
While normally used as part of a B2B (business to business) setup; it can also be used stand-alone as a normal MPGW FSH.
This poller though is slightly different from the other pollers, such as the NFS poller or a MQ poller. Those handlers will all perform roughly the same state sequence: first query the server to see if there is any data to poll, then open multiple simultaneous connections to get that data. These pollers have a configuration option to limit the concurrency of the poller, for example: Maximum File Transfers | Per Poll Cycle
When non-zero, this setting limits the number of concurrent transactions the MPGW will process.
Now the POP poller is different in that it will only retrieve messages from the server serially. So in effect a MPGW can only process 1 message at a time. The total throughput of the MPGW is then limited by the latency of these transactions. If a processing rule or a backend takes on average 100ms to complete, then the MPGW can only do on average 10TPS when using a POP poller. This is not very good. There is a clever alternative though, suggested by Christophe Bouchet:
If you proxy the poller through another MPGW using HTTP over the loopback interface, then you can increase the concurrency of the poller. Simply, the front MPGW would do the polling. In its request rule, have the policy do nothing but an asynchronous results action to the second MPGW on the same device. Then skip the backside and continue to poll the POP server.
In the second MPGW, there one can actually execute the logic and call the backends which may be slower. In this fashion the poller can achieve greater concurrency.
When using this approach, please be sure to abide by the best practices for async actions detailed here: Resource management and analysis best practices for WebSphere DataPower