Provisioning Queue Manager Service
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:
- By calling one of the submit methods in the IProvQueue interface of the client. SubmitTrustedRequest passes an entire request to the queue manager. SubmitRequest passes only the data node, procedure and namespace names, and context child nodes other than securityContext.
- By including a queue node in a synchronous request submitted through the client's IProvEngine interface. For example, if part of a request fails, you might still want to return a success message but queue the failed part of the request for retry once a server is available.
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:
- Activate or delete a suspended queued request.
- Retrieve the current status of a queued request.
- Retrieve the response XML when a queued request completes (or fails to complete).
- Establish a dependency between two suspended queued requests. In the request XML, you can designate one or more requests as predecessors (parents) of one or more dependent 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:
- Fails the request and activates any dependent requests.
- Suspends the request pending operator intervention. The request remains suspended until the operator resets the retry count and places the request back into the retry state. Suspended batch requests remain pending. Dependent requests of suspended parents are not executed.
The behavior of queue managers is configurable as follows.
- Using Provisioning Manager, set properties in Microsoft Provisioning, Provisioning Servers, Queue Managers.
- Using Configuration Database WMI Provider, call MSFT_MPFSite.maps_SetSiteProperty. For more information, see the page for class MSFT_MPFSite.
Property Description 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.
- Execute Procedures: Callers with this permission can submit simple requests using IProvQueue::SubmitRequest.
- Execute with Caller's Credentials: Callers with this permission can pass a security context in the request.
- Execute Trusted Procedures: Callers with this permission can submit trusted requests using IProvQueue::SubmitTrustedRequest. By default, only users in the Administrator, MPFAdmins, and MPFTrustedUsers groups are allowed to execute trusted procedures. Callers with this permission automatically receive the Execute with Caller's Credentials permission.
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.
Architecture, XML Schema for Requests
Top of Page
© 1999-2002 Microsoft Corporation. All rights reserved.