> Message Translation
> JMS Header Fields
> EMS supports the ten predefined JMS header fields; see JMS Message Header Fields.
> Special Cases
> These header fields are special cases:

> ● | JMS header JMSDestination corresponds to Rendezvous subject.

> ● | JMS header JMSReplyTo corresponds to Rendezvous reply subject.

> ● | JMS header JMSExpiration corresponds to the time limit of the Rendezvous certified message.

> Import
> When importing a Rendezvous message to an EMS message, tibemsd does not set any JMS header fields, except for the special cases noted above.
> Export
> When exporting an EMS message to a Rendezvous message, tibemsd groups all the JMS header fields (except for the special cases noted above) into a single submessage within the Rendezvous message. The field JMSHeaders contains that submessage. Fields of the submessage map the names of JMS header fields to their values.
> tibemsd ignores any JMS header fields that are null or absent—it omits them from the exported message.
> You can instruct tibemsd to suppress the entire header submessage in all exported messages by setting the transport property export_headers = false.
> Table 53 presents the mapping of JMS header fields to Rendezvous data types (that is, the type of the corresponding field in the exported message).

> Table 53 Rendezvous: Mapping JMS Header Fields to RV Datatypes
> JMS Header Name | Rendezvous Type
> JMSDeliveryMode | TIBRVMSG_U8
> JMSPriority | TIBRVMSG_U8
> JMSTimestamp | TIBRVMSG_U64
> JMSExpiration | TIBRVMSG_U64
> JMSType | TIBRVMSG_STRING
> JMSMessageID | TIBRVMSG_STRING
> JMSCorrelationID | TIBRVMSG_STRING
> JMSRedelivered | TIBRVMSG_BOOL
> JMSDestination | send subject in TIBCO Rendezvous
> JMSReplyTo | reply subject in TIBCO Rendezvous

> JMS Property Fields
> Import
> When importing a Rendezvous message to an EMS message, tibemsd sets these JMS properties:

> ● | JMS_TIBCO_IMPORTED gets the value true, to indicate that the message did not originate from an EMS client.

> ● | JMS_TIBCO_MSG_EXT gets the value true, to indicate that the message might contain submessage fields or array fields.

> Import RVCM
> In addition to the two fields described above, when tibemsd imports a certified message on a tibrvcm transport, it can also set these properties (if the corresponding information is set in the Rendezvous message):

> Table 54 Rendezvous Mapping Message Properties
> Property | Description
> JMS_TIBCO_CM_PUBLISHER | A string value indicating the correspondent name of the TIBCO Rendezvous CM transport that sent the message (that is, the sender name).
> JMS_TIBCO_CM_SEQUENCE | A long value indicating the CM sequence number of an RVCM message imported from TIBCO Rendezvous.

> Export
> When exporting an EMS message to a Rendezvous message, tibemsd groups all the JMS property fields into a single submessage within the Rendezvous message. The field JMSProperties contains that submessage. Fields of the submessage map the names of JMS property fields to their values.
> The tibemsd daemon ignores any JMS property fields that are not set, or are set to null—it omits them from the exported message.
> You can instruct tibemsd to suppress the entire properties submessage in the exported message by setting the transport property export_properties = false.
> Message Body
> tibemsd can export messages with any JMS message body type to TIBCO Rendezvous. Conversely, tibemsd can import messages with any message type from TIBCO Rendezvous.
> For information about JMS body types, see JMS Message Bodies.
> For information about the structure of messages, see JMS Message Structure.
> Import
> When importing a Rendezvous message, tibemsd translates it to an EMS message body type based on the presence of the field in Table 55.

> Table 55 Rendezvous: Mapping Message Types (Import)
> Rendezvous Field | EMS Body Type
> JMSBytes | JMSBytesMessage
> JMSObject | JMSObjectMessage
> JMSStream | JMSStreamMessage
> JMSText | JMSTextMessage
> None of these fields are present. | JMSMapMessage

> | The field names DATA and _data_ are reserved. We strongly discourage you from using these field names in either EMS and Rendezvous applications, and especially when these two message transport mechanisms interoperate.
> | Only standard Rendezvous fields identified by name can be imported into EMS. Custom fields and fields identified in the Rendezvous application by field identifiers cannot be imported.

> Export
> When exporting an EMS message, tibemsd translates it to a Rendezvous message with the following structure:

> ● | The field JMSHeaders contains a submessage; see JMS Header Fields. When the transport parameter export_headers is false, this field is omitted.

> ● | The field JMSProperties contains a submessage; see JMS Property Fields. When the transport parameter export_properties is false, this field is omitted.

> ● | When translating the data fields of an EMS message, the results depend on the JMS body type. Table 56 specifies the mapping.

> Table 56 Rendezvous: Mapping Message Types (Export)
> JMS Body Type | Export Translation
> BytesMessage | The message data translates to a byte array that contains the bytes of the original EMS message. The field JMSBytes receives this data. It has type TIBRVMSG_OPAQUE.
> ObjectMessage | The message data translates to a byte array containing the serialized Java object. The field JMSObject receives this data. It has type TIBRVMSG_OPAQUE.
> StreamMessage | The message data translates to a byte array that encodes the objects in the original EMS message. The field JMSStream receives this data. It has type TIBRVMSG_OPAQUE.
> TextMessage | The message data translates to a UTF-8 string corresponding to the text of the original EMS message. The field JMSText receives this data. It has type TIBRVMSG_STRING.
> MapMessage | The message data fields map directly to top-level fields in the Rendezvous message. The fields retain the same names as in the original EMS message. See also, EMS Extensions to JMS Messages.

> Data Types
> Table 57 presents the mapping between EMS datatypes and Rendezvous datatypes. The mapping is bidirectional, except for the Rendezvous types that have no corresponding EMS type (for these types the mapping is marked as unidirectional in the middle column of Table 57).

> Table 57 Rendezvous: Mapping Data Types
> EMS | Map | Rendezvous
> Boolean |  | TIBRVMSG_BOOL
> Byte |  | TIBRVMSG_I8
> Short | <— | TIBRVMSG_U8
> Short |  | TIBRVMSG_I16
> Integer | <— | TIBRVMSG_U16
> Integer |  | TIBRVMSG_I32
> Long | <— | TIBRVMSG_U32
> Long |  | TIBRVMSG_I64
> Long | <— | TIBRVMSG_U64
> Float |  | TIBRVMSG_F32
> Double |  | TIBRVMSG_F64
> Short | <— | TIBRVMSG_IPPORT16
> Integer | <— | TIBRVMSG_IPADDR32
> MapMessage |  | TIBRVMSG_MSG
> Long | <— | TIBRVMSG_DATETIME
> byte[] |  | TIBRVMSG_OPAQUE
> java.lang.String |  | TIBRVMSG_STRING
> byte[] | <— | TIBRVMSG_XML
> byte[] | <— | TIBRVMSG_I8ARRAY
> short[] | <— | TIBRVMSG_U8ARRAY
> short[] |  | TIBRVMSG_I16ARRAY
> int[] | <— | TIBRVMSG_U16ARRAY
> int[] |  | TIBRVMSG_I32ARRAY
> long[] | <— | TIBRVMSG_U32ARRAY
> long[] |  | TIBRVMSG_I64ARRAY
> long[] | <— | TIBRVMSG_U64ARRAY
> float[] |  | TIBRVMSG_F32ARRAY
> double[] |  | TIBRVMSG_F64ARRAY

Copyright © TIBCO Software Inc. All Rights Reserved.