z/TPF - Group home

Business events support for multiple unordered dispatch queues (PJ46905)

  

Business events support for multiple unordered dispatch queues provides you with the capability to define multiple unordered dispatch queues that use multiple ECBs for dispatch processing.

Previously, the system default dispatch queue (IBEV.UNORDERED.DISPATCH.QUEUE) was the only unordered dispatch queue. Multiple dispatch ECBs could process events simultaneously on this dispatch queue so that the events could be processed at a high rate. If you have different events that are created at a high rate, you might configure those events so that multiple events use the system default dispatch queue. As a result, you might have different events using different transmit methods or destinations, all using the same dispatch queue. However, if an event encounters a transmit error or timeout, it could delay the processing of other unrelated events on the dispatch queue.

The following example shows how you might configure multiple business events to use the system default dispatch queue. Each event in the image below is labeled based on destination. The green event labeled “B” as depicted in the cloud on the right was transmitted by using high speed connector and was received by the destination as expected. The next two items on the dispatch queue were the two red colored items labeled “A”, which are using a synchronous transmit method like a REST service. In this example, the destination for the red events is not accepting any new transmissions, therefore at least one event must time out before business events processing can process the next item on the dispatch queue. All dispatch ECBs are waiting for timeouts, so no other events can be processed at this time. Because you are using only one unordered dispatch queue, transmit errors on one destination can negatively impact the processing of all events on this dispatch queue.

With this support, you can define multiple unordered dispatch queues, and assign business events to separate unordered dispatch queues based on destination, SLAs, volume, or any other criteria. By separating events on separate unordered dispatch queues, issues with events on one dispatch queue will not affect processing of events on other dispatch queues. For example, you might separate business events onto different dispatch queues based on destination. When a particular destination encounters network issues, all the dispatch ECBs for that unordered dispatch queue are waiting for the transmit requests to time out. While this separation prevents all events on that specific dispatch queue from being processed, those waiting dispatch ECBs do not affect the processing of events on other dispatch queues.

In the following example, we have defined three unordered dispatch queues, and separated out events based on destination and transmit methods. Now if there is an error encountered while transmitting events, the processing of other unrelated events will not be affected.

To designate a dispatch queue to be unordered, define the dispatch queue with the prefix “IBEV.UNORDERED.”. You can then uniquely set the maximum number of ECBs that can be used for each unordered dispatch queue by entering the ZBEVF SET command. To display dispatch queue information, enter the ZBEVF DISPLAY command.

The following example shows how you can define a new unordered dispatch queue on your z/TPF systems by using the ZBEVF command.

AAES0008I 00 ==> ZBEVF SET MAXECBS-10 DISPQUEUE-IBEV.UNORDERED.EXAMPLE.QUEUE
CSMP0097I 14.12.58 CPU-B SS-BSS  SSU-HPN  IS-01
BEVF0024I 14.12.58 BUSINESS EVENTS MAXECBS HAS BEEN SET TO 10 FOR DISPATCH
QUEUE IBEV.UNORDERED.EXAMPLE.QUEUE+
AAES0008I 00 ==> zbevf disp settings
CSMP0097I 14.13.05 CPU-B SS-BSS  SSU-HPN  IS-01
BEVF0071I 14.13.05 DISPLAY OF BUSINESS EVENT SETTINGS
 MAXEVENTS:                       10
 MAXERRORS:                       10
 QDEPTHWARN:                      50
 SIGNAL EVENTS ENABLED ON PROCS:  B
 DATA EVENTS ENABLED ON PROCS:    B _
 UNORDERED USER-DEFINED DISPATCH QUEUES IN IBEVCNTL
   CURRENT:    2
   MAXIMUM:   20
 MAXECB SETTINGS:
   DISPATCH QUEUE                                     MAXECBS
   IBEV.UNORDERED.DISPATCH.QUEUE (SYSTEM DEFAULT)          10
   IBEV.UNORDERED.EXAMPLE.QUEUE                            10 _
   IBEV.UNORDERED.FLYT.DRIVER                               5
END OF DISPLAY+

The following example shows the new DISPQUEUE parameter added to the ZBEVF DISPLAY command, which shows important information about a dispatch queue.

AAES0008I 00 ==> ZBEVF DISP DISPQUEUE-IBEV.UNORDERED.EXAMPLE.QUEUE
CSMP0097I 16.09.26 CPU-B SS-BSS  SSU-HPN  IS-01
BEVF0075I 16.09.26 DISPLAY OF BUSINESS EVENT DISPATCH QUEUES
FILTERS: DISPQueue-IBEV.UNORDERED.EXAMPLE.QUEUE QType-ALL
DISPATCH QUEUE                                   TYPE  ECBS  ECBHI  MAXECBS _
IBEV.UNORDERED.EXAMPLE.QUEUE                      UNO     -      -       10
     1 DISPATCH QUEUES MATCH FILTERS
END OF DISPLAY+

In addition, improvements to dispatch ECB processing automatically throttle the number of dispatch ECBs under certain conditions, allowing the system or transmit services to recover from those conditions.  When system resources are low or transmit errors are occurring, dispatch ECBs exit until at most 2 dispatch ECBs are still active for the affected dispatch queue.  When system resources are low, the remaining 2 dispatch ECBs are suspended and automatically resume processing when sufficient system resources are available.  After a transmit error occurs, the remaining dispatch ECBs delay processing the next event until an event is transmitted successfully.

For more information about APAR PJ46905, see the APEDIT and the product documentation.