Channels and Destinations : Working with Rendezvous Channels

Working with Rendezvous Channels
This section explains the behavior of the provided Rendezvous serializer classes and other related information.
Note that the Rendezvous serializers use UTF8 encoding for XML payloads.
The type of the event from which the outbound message is serialized is added to the Rendezvous message header using _nm_ and _ns_ fields so that if the message is used in TIBCO BusinessEvents again, the correct event type is used to deserialize the message (ignoring the default event specified for the destination).
See Adding Channels and Destinations for details on adding Rendezvous channels.
See the section, For TIBCO Enterprise Message Service and TIBCO Rendezvous Channels, in TIBCO BusinessEvents Administration, for TRA file updates required for Rendezvous.
Rendezvous Message Header
For Rendezvous messages, the only header that TIBCO BusinessEvents interprets is _sendsubject_ which is of type String. It is a read-only property. The event has to define this property to receive the value. The value is the actual Subject on which the message was sent.
Basic Serializer
The basic serializer, TibRvMsgSerializer serializer, is for efficient handling of events and messages that do not have payloads. It ignores payloads in messages and in events if any exist.
First level Rendezvous property values are used as values for matching event properties. Any additional (non-matching) Rendezvous properties are ignored.
Serializer For Use with Payloads
To include a payload in a Rendezvous message, ensure that the message has a _payload_ field. To pass contents between the Rendezvous message _payload_ field and an event payload, use the TibRvMsgSerializerWithXMLPayload serializer.
Deserializing from Rendezvous Message to Event
First level Rendezvous property values are used as values for matching event properties. Any additional (non-matching) Rendezvous properties are ignored.
The _payload_ field contents are passed into the event payload. Supported _payload_ field datatypes and Rendezvous wire format types are as follows:
TibrvMsg.OPAQUE TibrvMsg.I8ARRAY
If the event defines a payload, but the incoming Rendezvous message does not have a _payload_ field, TIBCO BusinessEvents attempts to map the entire message as the event payload.
Serializing from Event to Rendezvous Message
Event properties are transformed to first level Rendezvous message properties.
The event payload is passed to the Rendezvous message _payload_ field.
If the _payload_ field is of an unsupported type, or is missing, or if the event has not been configured for a payload, the payload is ignored.
Avoiding REGISTRATION COLLISION RVCM Advisory Messages
This section applies to configuring RVCM when using a Rendezvous transport shared resource (see Rendezvous Transport).
REGISTRATION.COLLISION RVCM advisory messages can be thrown when when the same CM name (or CMQ name) is used on all engines. These name collisions can result in thrashing.
To prevent this issue, you must ensure that the CM names (and CMQ names) are different on all engines. To do so, add global variables to the CM Name or CMQ Name, and to the ledger file name if a ledger file is used for RVCM, to ensure the uniqueness of these names. Add one or more of the following variables, depending on need (as explained below):
%%EngineName%%
%%ChannelName%%
%%ChannelURI%%
The %%EngineName%% variable is generally required for all names. Note that you must start engines using unique names so that the value of each engine's %%EngineName%% variable be different at runtime.
In addition, if different channels use the same RVCM shared resource, you also need to add %%ChannelName%% or %%ChannelURI%%.
Use %%ChannelURI%% in cases where channels using the same RVCM shared resource have the same name but are in different folders.
You must define any of the above String type global variables you use. They are not predefined. However, TIBCO BusinessEvents provides the value at runtime, so you can use any string value or use an empty string as the value when you define the variables.