A Producer sends messages to a destination. Producers dispatch a MessageAckEvent or MessageFaultEvent for each message they send depending upon whether the outbound message was sent and processed successfully or not.

Static variables

@:value(4)staticfinalread onlyDEFAULT_PRIORITY:Int = 4

The default message priority.

Constructor

new()

Constructor.

function sendMessage():Void
{
	var producer:Producer = new Producer();
	producer.destination = "NASDAQ";
	var msg:AsyncMessage = new AsyncMessage();
	msg.headers.operation = "UPDATE";
	msg.body = {"SYMBOL":50.00};
	producer.send(msg);
}

Variables

@:flash.propertysubtopic:String

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

Inherited Variables

Defined by AbstractProducer

@:flash.propertyautoConnect:Bool

If true the Producer automatically connects to its destination the first time the send() method is called. If false then the connect() method must be called explicitly to establish a connection to the destination. By default this property is true, but applications that need to operate in an offline mode may set this to false to prevent the send() method from connecting implicitly.

@:flash.propertydefaultHeaders:Dynamic

The default headers to apply to messages sent by the Producer. Any default headers that do not exist in the message will be created. If the message already contains a matching header, the value in the message takes precedence and the default header value is ignored.

@:flash.propertypriority:Int

The default message priority for the messages sent by the Producer. The valid values are 0 to 9 (0 being lowest) and -1 means that the Producer does not have a priority set. Note that if the message already has a priority defined, that takes precedence over Producer's priority.

@:flash.propertyreconnectAttempts:Int

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

Reconnect attempts are made at a constant rate according to the reconnect interval value. When a reconnect attempt is made if the underlying channel for the Producer is not connected or attempting to connect the channel will start a connect attempt. Subsequent Producer reconnect 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.Producer#reconnectInterval

@:flash.propertyreconnectInterval:Int

The number of milliseconds between reconnect attempts. If a Producer doesn't receive an acknowledgement for a connect attempt, it will wait the specified number of milliseconds before making a subsequent reconnect attempt. Setting the value to zero disables reconnect attempts.

Reconnect attempts are made at a constant rate according to this value. When a reconnect attempt is made if the underlying channel for the Producer is not connected or attempting to connect the channel will start a connect attempt. Subsequent Producer reconnect 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.Producer#reconnectInterval

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 AbstractProducer

connect():Void

Connects the Producer to its target destination. When a connection is established the connected property will change to true and this property is bindable and generates PropertyChangeEvents. The internal TRIGGER_CONNECT_OPERATION CommandMessage that is sent will result in an acknowledge or fault event depending upon whether the underlying channel establishes its connection.

Throws:

mx.messaging.errors.InvalidDestinationError

If no destination is set.

var producer:Producer = new Producer();
producer.destination = "TestTopic";
producer.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, handleConnect);
producer.connect();

disconnect():Void

Disconnects the Producer from its remote destination. This method does not wait for outstanding network operations to complete. After invoking disconnect(), the Producer will report that it is not connected and it will not receive any outstanding message acknowledgements or faults. Disconnecting stops automatic reconnect attempts if they are running.

send(message:IMessage):Void

Sends the specified message to its destination. If the producer is being used for publish/subscribe messaging, only messages of type AsyncMessage should be sent unless a custom message type is being used and the message destination on the server has been configured to process the custom message type.

Parameters:

message

The Message to send.

Throws:

mx.messaging.errors.InvalidDestinationError

If no destination is set.

var producer = new Producer();
producer.destination = "TestTopic";
var msg = new AsyncMessage();
msg.body = "test message";
producer.send(msg);

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

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

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

Parameters:

errMsg

The ErrorMessage.

msg

The original sent message that caused this fault.

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".