CMQueueTransport
Class
Superclasses
System.Object
Transport
CMTransport
CMQueueTransport
Visual Basic
Public ClassCMQueueTransport
Inherits CMTransport
C#
public class CMQueueTransport
: CMTransport
Purpose
Coordinate a distributed queue for one-of-n delivery.
Remarks
Each CMQueueTransport object employs a NetTransport for network communications. The CMQueueTransport adds the accounting and coordination mechanisms needed for one-of-n delivery.
Several CMQueueTransport objects can employ one NetTransport, which also remains available for its own ordinary listeners and for sending ordinary messages.
Programs must explicitly destroy each CMQueueTransport object. Destroying a CMQueueTransport invalidates any certified listeners using that transport (while preserving their certified delivery agreements).
Whether explicitly or implicitly, programs must destroy instances of this class. Rendezvous software keeps internal references to these objects, so the garbage collector does not delete them automatically.
All members of a distributed queue must listen to exactly the same set of subjects. See Enforcing Identical Subscriptions in
.Scheduler recovery and task rescheduling are available only when the task message is a certified message (that is, a certified delivery agreement is in effect between the task sender and the distributed queue transport scheduler).
Disabled Methods
Although CMQueueTransport is a subclass of CMTransport, all methods related to sending messages are disabled in CMQueueTransport. These disabled methods throw an NotSupportedException
; for a list, see Disabled Methods. See also Certified Delivery Behavior in Queue Members in .
Member |
Type & Value |
Public Static Fields |
|
DefaultWorkerWeight
|
uint 1
|
DefaultWorkerTasks
|
uint 1
|
DefaultSchedulerWeight
|
ushort 1
|
DefaultSchedulerHeartbeat
|
double 1.0
|
DefaultSchedulerActivation
|
double 3.5
|
Member |
Description |
|
Public Instance Properties |
||
BaseTransport
|
The transport employed by the certified delivery transport; see CMTransport. (Inherited from CMTransport.) |
Get |
CompleteTime
|
double The worker complete time limit (in seconds) of a distributed queue member. For details, see Complete Time. |
Get Set |
DefaultTimeLimit
|
double
The default message time limit (in whole seconds) for all outbound certified messages from the transport. (Inherited from CMTransport.) For details, see DefaultTimeLimit. |
Get Set |
Description
|
string
The description identifies programs and their transports to Rendezvous components. Browser administration interfaces display the description string. (Inherited from Transport.) As a debugging aid, we recommend setting a unique description string for each transport. Use a string that distinguishes both the application and the role of the transport within it. |
Get Set |
LedgerName
|
string
The name of the ledger file; see CMTransport. When getting this property, an exception with the error code ArgumentsConflict can indicate that the transport does not have a ledger file. |
Get |
Name
|
string
The correspondent name; see CMTransport. (Inherited from CMTransport.) |
Get |
RequestOld
|
bool
The request old messages flag of the certified delivery transport; see CMTransport. (Inherited from CMTransport.) |
Get |
SynchronizeLedger
|
bool
The sync ledger flag of a certified delivery transport; see CMTransport. (Inherited from CMTransport.) When getting this property, an exception with the error code ArgumentsConflict can indicate that the transport does not have a ledger file. |
Get |
TaskBacklogLimitInBytes
|
uint
The maximum size (in bytes) of the scheduler task queue. For background information, see Scheduler Task Backlog Limits. |
Set |
TaskBacklogLimitInMessages
|
uint
The maximum size (in messages) of the scheduler task queue. For background information, see Scheduler Task Backlog Limits. |
Set |
uint
The number of unassigned task messages. An unassigned task message is a message received by the scheduler, but not yet assigned to any worker in the distributed queue. This property is a valid count only within a scheduler process. Within a worker process, this value is always zero. |
Get |
|
WorkerTasks
|
uint
The worker task capacity of the distributed queue member. For details, see Worker Tasks. |
Get Set |
WorkerWeight
|
uint
The worker task capacity of the distributed queue member. For details, see Worker Weight. |
Get Set |
Method |
Description |
Page |
Inherited Methods |
|
Legal Methods |
System.Object.Equals System.Object.GetType System.Object.GetHashCode System.Object.ToString
|
Complete Time
The complete time property influences scheduler behavior.
If the complete time is non-zero, the scheduler waits for a worker member to complete an assigned task. If the complete time elapses before the scheduler receives completion from the worker member, the scheduler reassigns the task to another worker member.
Zero is a special value, which specifies no limit on the completion time—that is, the scheduler does not set a timer, and does not reassign tasks when task completion is lacking. All members implicitly begin with a default complete time value of zero.
The complete time must be non-negative.
Scheduler Task Backlog Limits
The scheduler stores tasks in a queue. Two properties limit the maximum size of that queue—by number of bytes or number of messages (or both). When no value is set for these properties, the default is no limit.
When the task messages in the queue exceed either of these limits, Rendezvous software deletes new inbound task messages.
Programs may set each of these methods at most once. Those calls must occur before the transport assumes the scheduler role; after a transport acts as a scheduler, these values are fixed, and subsequent attempts to change them throw exceptions with status code NotPermitted.
Worker Tasks
Task capacity is the maximum number of tasks that a worker can accept. When the number of accepted tasks reaches this maximum, the worker cannot accept additional tasks until it completes one or more of them.
When the scheduler receives a task, it assigns the task to the worker with the greatest worker weight—unless the pending tasks assigned to that worker exceed its task capacity. When the preferred worker has too many tasks, the scheduler assigns the new inbound task to the worker with the next greatest worker weight.
The default worker task capacity is 1.
Zero is a special value, indicating that this distributed queue member is a dedicated scheduler (that is, it never accepts tasks).
Warning |
Tuning task capacity to compensate for communication time lag is more complicated than it might seem. Before setting this value to anything other than 1. |
Worker Weight
Relative worker weights assist the scheduler in assigning tasks. When the scheduler receives a task, it assigns the task to the available worker with the greatest worker weight.
The default worker weight is 1; programs can set this parameter at creation using CMQueueTransport, or change it dynamically.