A Consumer subscribes to a destination to receive messages. Consumers send subscribe and unsubscribe messages which generate a MessageAckEvent or MessageFaultEvent depending upon whether the operation was successful or not. Once subscribed, a Consumer dispatches a MessageEvent for each message it receives. Consumers provide the ability to filter messages using a selector. These selectors must be understood by the destination.

Constructor

@:value({ messageType : "flex.messaging.messages.AsyncMessage" })new(messageType:String = "flex.messaging.messages.AsyncMessage")

Constructor.

Parameters:

messageType

The alias for the message type processed by the service hosting the remote destination the Consumer will subscribe to. This parameter is deprecated and it is ignored by the constructor.

function initConsumer():Void
{
	var consumer:Consumer = new Consumer();
	consumer.destination = "NASDAQ";
	consumer.selector = "operation IN ('Bid','Ask')";
	consumer.addEventListener(MessageEvent.MESSAGE, messageHandler);
	consumer.subscribe();
}
function messageHandler(event:MessageEvent):Void
{
	var msg:IMessage = event.message;
	var info:Object = msg.body;
	trace("-App recieved message: " + msg.toString());
}

Variables

@:flash.propertyselector:String

The selector for the Consumer. This is an expression that is passed to the destination which uses it to filter the messages delivered to the Consumer.

Before a call to the subscribe() method, this property can be set with no side effects. After the Consumer has subscribed to its destination, changing this value has the side effect of updating the Consumer's subscription to use the new selector expression immediately.

The remote destination must understand the value of the selector expression.

@:flash.propertysubtopic:String

Provides access to the subtopic for the remote destination that the MessageAgent uses.

Inherited Variables

Defined by AbstractConsumer

@:flash.propertymaxFrequency:UInt

Determines the maximum number of messages per second the Consumer wants to receive. A server that understands this value will use it as an input while it determines how fast to send messages to the Consumer. Default is 0 which means Consumer does not have a preference for the message rate. Note that this property should be set before the Consumer subscribes and any changes after Consumer subscription will not have any effect until Consumer unsubscribes and resubscribes.

@:flash.propertyresubscribeAttempts:Int

The number of resubscribe attempts that the Consumer makes in the event that the destination is unavailable or the connection to the destination fails. A value of -1 enables infinite attempts. A value of zero disables resubscribe attempts.

Resubscribe attempts are made at a constant rate according to the resubscribe interval value. When a resubscribe attempt is made if the underlying channel for the Consumer is not connected or attempting to connect the channel will start a connect attempt. Subsequent Consumer resubscribe attempts that occur while the underlying channel connect attempt is outstanding are effectively ignored until the outstanding channel connect attempt succeeds or fails.

See also:

  • mx.messaging.Consumer#resubscribeInterval

@:flash.propertyresubscribeInterval:Int

The number of milliseconds between resubscribe attempts. If a Consumer doesn't receive an acknowledgement for a subscription request, it will wait the specified number of milliseconds before attempting to resubscribe. Setting the value to zero disables resubscriptions.

Resubscribe attempts are made at a constant rate according to this value. When a resubscribe attempt is made if the underlying channel for the Consumer is not connected or attempting to connect the channel will start a connect attempt. Subsequent Consumer resubscribe attempts that occur while the underlying channel connect attempt is outstanding are effectively ignored until the outstanding channel connect attempt succeeds or fails.

Throws:

ArgumentError

If the assigned value is negative.

See also:

  • mx.messaging.Consumer#resubscribeInterval

@:flash.propertyread onlysubscribed:Bool

Indicates whether the Consumer is currently subscribed. The propertyChange event is dispatched when this property changes.

@:flash.propertytimestamp:Float

Contains the timestamp of the most recent message this Consumer has received. This value is passed to the destination in a receive() call to request that it deliver messages for the Consumer from the timestamp forward. All messages with a timestamp value greater than the timestamp value will be returned during a poll operation. Setting this value to -1 will retrieve all cached messages from the destination.

Defined by MessageAgent

@:flash.propertyread onlyauthenticated:Bool

Indicates if this MessageAgent is using an authenticated connection to its destination.

@:flash.propertychannelSet:ChannelSet

Provides access to the ChannelSet used by the MessageAgent. The ChannelSet can be manually constructed and assigned, or it will be dynamically initialized to use the configured Channels for the destination for this MessageAgent.

@:flash.propertyread onlyclientId:String

Provides access to the client id for the MessageAgent. MessageAgents are assigned their client id by the remote destination and this value is used to route messages from the remote destination to the proper MessageAgent.

@:flash.propertyread onlyconnected:Bool

Indicates whether this MessageAgent is currently connected to its destination via its ChannelSet. The propertyChange event is dispatched when this property changes.

@:flash.propertydestination:String

Provides access to the destination for the MessageAgent. Changing the destination will disconnect the MessageAgent if it is currently connected.

Throws:

mx.messaging.errors.InvalidDestinationError

If the destination is null or zero-length.

@:flash.propertyid:String

The id of this agent.

@:flash.propertyrequestTimeout:Int

Provides access to the request timeout in seconds for sent messages. If an acknowledgement, response or fault is not received from the remote destination before the timeout is reached the message is faulted on the client. A value less than or equal to zero prevents request timeout.

Inherited Methods

Defined by AbstractConsumer

disconnect():Void

Disconnects the Consumer from its remote destination. This method should be invoked on a Consumer that is no longer needed by an application after unsubscribing. This method does not wait for outstanding network operations to complete and does not send an unsubscribe message to the server. After invoking disconnect(), the Consumer will report that it is in an disconnected, unsubscribed state because it will not receive any more messages until it has reconnected and resubscribed. Disconnecting stops automatic resubscription attempts if they are running.

fault(errMsg:ErrorMessage, msg:IMessage):Void

The Consumer supresses ErrorMessage processing if the error is retryable and it is configured to resubscribe.

Parameters:

errMsg

The ErrorMessage describing the fault.

msg

The original message (generally a subscribe).

@:value({ timestamp : 0 })receive(timestamp:Float = 0):Void

Requests any messages that are queued for this Consumer on the server. This method should only be used for Consumers that subscribe over non-realtime, non-polling channels. This method is a no-op if the Consumer is not subscribed.

Parameters:

timestamp

This argument is deprecated and is ignored.

@:value({ clientId : null })subscribe(?clientId:String):Void

Subscribes to the remote destination.

Parameters:

clientId

The client id to subscribe with. Use null for non-durable Consumers. If the subscription is durable, a consistent value must be supplied every time the Consumer subscribes in order to reconnect to the correct durable subscription in the remote destination.

Throws:

mx.messaging.errors.InvalidDestinationError

If no destination is set.

@:value({ preserveDurable : false })unsubscribe(preserveDurable:Bool = false):Void

Unsubscribes from the remote destination. In the case of durable JMS subscriptions, this will destroy the durable subscription on the JMS server.

Parameters:

preserveDurable
  • when true, durable JMS subscriptions are not destroyed allowing consumers to later resubscribe and receive missed messages

Defined by MessageAgent

acknowledge(ackMsg:AcknowledgeMessage, msg:IMessage):Void

Invoked by a MessageResponder upon receiving a result for a sent message. Subclasses may override this method if they need to perform custom acknowledgement processing, but must invoke super.acknowledge() as well. This method dispatches a MessageAckEvent.

Parameters:

ackMsg

The AcknowledgMessage returned.

msg

The original sent message.

channelConnectHandler(event:ChannelEvent):Void

Handles a CONNECT ChannelEvent. Subclasses that need to perform custom processing should override this method, and invoke super.channelConnectHandler().

Parameters:

event

The ChannelEvent.

channelDisconnectHandler(event:ChannelEvent):Void

Handles a DISCONNECT ChannelEvent. Subclasses that need to perform custom processing should override this method, and invoke super.channelDisconnectHandler().

Parameters:

event

The ChannelEvent.

channelFaultHandler(event:ChannelFaultEvent):Void

Handles a ChannelFaultEvent. Subclasses that need to perform custom processing should override this method, and invoke super.channelFaultHandler().

Parameters:

The

ChannelFaultEvent

hasPendingRequestForMessage(msg:IMessage):Bool

Returns true if there are any pending requests for the passed in message. This method should be overriden by subclasses

Parameters:

msg

The message for which the existence of pending requests is checked.

Returns:

Returns true if there are any pending requests for the passed in message.

initialized(document:Any, id:String):Void

Called after the implementing object has been created and all properties specified on the tag have been assigned.

Parameters:

document

MXML document that created this object.

id

id used by the document to refer to this object. If the object is a deep property on the document, id is null.

logout():Void

Logs the MessageAgent out from its remote destination. Logging out of a destination applies to everything connected using the same ChannelSet as specified in the server configuration. For example, if several DataService components are connected over an RTMP channel and logout() is invoked on one of them, all other client components that are connected using the same ChannelSet are also logged out.

Note: Adobe recommends that you use the mx.messaging.ChannelSet.logout() method rather than this method.

See also:

  • mx.messaging.ChannelSet#logout()

@:value({ charset : null })setCredentials(username:String, password:String, ?charset:String):Void

Sets the credentials that the MessageAgent uses to authenticate to destinations. The credentials are applied to all services connected over the same ChannelSet.

Parameters:

username

The username.

password

The password.

charset

The character set encoding to use while encoding the credentials. The default is null, which implies the legacy charset of ISO-Latin-1. The only other supported charset is "UTF-8".

Throws:

flash.errors.IllegalOperationError

in two situations; if credentials have already been set and an authentication is in progress with the remote detination, or if authenticated and the credentials specified don't match the currently authenticated credentials.

@:value({ charset : null })setRemoteCredentials(username:String, password:String, ?charset:String):Void

Sets the remote credentials that will be passed through to the remote destination for authenticating to secondary systems.

Parameters:

username

The username.

password

The password.

charset

The character set encoding to use while encoding the remote credentials. The default is null, which implies the legacy charset of ISO-Latin-1. The only other currently supported option is "UTF-8".