CMQueueTransport

Class

Superclasses

System.Object
  Transport
    CMTransport
      CMQueueTransport

Visual Basic

Public Class CMQueueTransport
  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 TIBCO Rendezvous Concepts.

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 TIBCO Rendezvous Concepts.

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

NetTransport

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

UnassignedMessageCount

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

CMQueueTransport

Create a transport as a distributed queue member.

CMQueueTransport

Inherited Methods

Legal Methods

CMTransport.Destroy

System.Object.EqualsSystem.Object.GetTypeSystem.Object.GetHashCodeSystem.Object.ToString

Disabled Methods

CMTransport.AddListener

CMTransport.AllowListener

CMTransport.DisallowListener

CMTransport.RemoveListener

CMTransport.RemoveSendState

CMTransport.ReviewLedger

CMTransport.Send

CMTransport.SendReply

CMTransport.SendRequest

CMTransport.SynchronizeLedgerNow

Transport.CreateInbox

Transport.Send

Transport.SendReply

Transport.SendRequest

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.

Related Classes

Transport

NetTransport

CMTransport