Microsoft® Provisioning Framework (MPF) uses Provisioning Queue Manager Service to coordinate requests queued for later processing by a provisioning engine. Examples of queued requests include operations that typically require a lot of time to complete and batch operations that process many records simultaneously. However, any provisioning request can be queued.
MPF setup installs Provisioning Queue Manager Service in Windows Component Services, Services. An MPF installation can have one or more queue manager servers.
Queued requests can be submitted in one of two ways:
Requests can be submitted in activated or suspended mode. Activated requests are queued for processing immediately. Suspended requests remain pending. (For example, they may require that a dependent action is completed first.)
Once a request is submitted, the receiving queue manager assigns it a queue ID for subsequent tracking and returns this ID to the caller. This queue ID accompanies the transaction into the transaction log.
Using IProvQueue, you can perform the following operations on queued requests:
Any request with multiple data nodes is considered a batch request. When a queue manager receives a batch request, it parses the request and generates a separate request for each data node. In addition to the data node, each new request also contains the globalData (if any) and procedure node merged from the original request.
Whenever dependencies exist between queued requests, you can designate one or more suspended requests as predecessors (parents) of another request. For example, if request A must complete before request B starts, request A would be the parent. If requests A, B, and C must complete before request D, requests A, B, and C would all be parents.
When transactions execute successfully, the queue manager records the response XML and activates any dependent requests. Otherwise, the request is retried, then either failed or suspended, depending on the configurations defined in the context node of the request XML. When the number of retries has been exhausted, the queue manager does one of two things:
The behavior of queue managers is configurable as follows.
|Requests Security||This property controls which users and groups can submit
requests to queue managers and the type of requests they can
submit. Options for submitting requests include the following. A
caller can have multiple access permissions.
|Max Queue Size||This property controls the maximum number of requests the queue manager can store in the queue. The default max queue size is 10,000 requests.|
|Action Request Threads||Each thread is responsible for taking a request from the queue and sending it to provisioning engines. The greater the number of threads, the greater the number of requests that MPF can process simultaneously. A greater number of threads will consume more hardware resources. You can use this option to tune the performance for request processing. The default number of action request threads is 10 threads.|
|Queue Pickup Period||This property controls the interval between scans of the transaction log database. During these scans, MPF searches for queue actions for which dependencies have been satisfied and are now ready to run, or have previously failed and are now ready to be retried.|
|Transaction Log Pool Size||Specifies the maximum number of connections that can be established to one transaction log database. The default setting is 100 simultaneous connections.|
|Queue Fill Factor||Specifies the percentage of queue with respect to "Max Queue Size" to be filled by the pending queued jobs when MPF scans transaction log database. This allows in memory queue to remain partially empty for accepting new jobs.|
|Retain Successful Responses Default||Default value for retaining successful responses in case if the value is not specified with each of the queued request.|
To activate, deactivate, start, or stop a queue manager server, use Provisioning Manager.