Class MQMD
- java.lang.Object
-
- com.ibm.mq.jmqi.JmqiObject
-
- com.ibm.mq.MQMD
-
- Direct Known Subclasses:
- MQMessage
public class MQMD extends com.ibm.mq.jmqi.JmqiObject
The MQMD class contains the control information that accompanies the application data when a message travels between the sending and receiving applications.Character data in the message descriptor is in the character set of the queue manager to which the application is connected; this is given by the CodedCharSetId queue manager attribute. Numeric data in the message descriptor is in the native machine encoding (given by MQENC_NATIVE).
If the sending and receiving queue managers use different character sets or encodings, the data in the message descriptor is converted automatically - it is not necessary for the receiving application to perform these conversions.
You can write an exit to convert an application's message data, that will be invoked when an MQGET call retrieves the message.
- See Also:
MQMessage
-
-
Field Summary
Fields Modifier and Type Field and Description byte[]
accountingToken
The accounting token.java.lang.String
applicationIdData
Application ID data.java.lang.String
applicationOriginData
Data about the originating application.int
backoutCount
The number of times the message has been backed out.int
characterSet
The coded character set identifier of character data in the application message data.byte[]
correlationId
Specifies the correlation identifier of the message to be retrieved.int
encoding
Specifies the representation used for numeric values in the application message data.int
expiry
The expiry time (in tenths of a second).int
feedback
The nature of the feedback report.java.lang.String
format
A name which indicates the nature of the data in the message.byte[]
groupId
The ID of the message group.int
messageFlags
Flags controlling the segmentation and status of the message.byte[]
messageId
Specifies the message identifier of the message to be retrieved.int
messageSequenceNumber
Sequence number of logical message within group.int
messageType
Indicates the type of the message.int
offset
Offset of data in the physical message from the start of the logical message.int
originalLength
Original length of a segmented message.int
persistence
The message persistence.int
priority
The message priority.java.lang.String
putApplicationName
The name of the application that put the message.int
putApplicationType
The type of application that put the message.java.util.GregorianCalendar
putDateTime
The time and date when the message was put.java.lang.String
replyToQueueManagerName
The name of the queue manager to which reply or report messages should be sent.java.lang.String
replyToQueueName
The name of the queue to which a reply should be sent.int
report
This field enables the application sending the original message to specify which report messages are required, whether the application message data is to be included in them, and also how the message and correlation ID in the report or reply are to be set.java.nio.charset.CodingErrorAction
unmappableAction
The action to be taken if character data cannot be encoded using the character set specified The default value for this field is taken from system Java MQI, which can be configured via the Java system property: com.ibm.mq.cfg.jmqi.UnmappableCharacterAction The default Java MQI system value is used when the above Java system property has not been configured on the Java Runtime Environment and is java.nio.charset.CodingErrorAction.REPORT.byte[]
unMappableReplacement
The byte sequence to be used if character data cannot be encoded using the character set specified and the unmappableAction is java.nio.charset.CodingErrorAction.REPLACE.java.lang.String
userId
The user ID.
-
Constructor Summary
Constructors Constructor and Description MQMD()
The default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description int
getVersion()
Gets the version of the message.void
setVersion(int version)
Sets the version of the message.
-
-
-
Field Detail
-
report
public int report
This field enables the application sending the original message to specify which report messages are required, whether the application message data is to be included in them, and also how the message and correlation ID in the report or reply are to be set. It comprises one or more constants from the CMQC class combined by means of the '+' or '|' operators.
You can select one type from each row of the following table:basic with data with full data Exception CMQC.MQRO_EXCEPTION
CMQC.MQRO_EXCEPTION_WITH_DATA
CMQC.MQRO_EXCEPTION_WITH_FULL_DATA
Expiration CMQC.MQRO_EXPIRATION
CMQC.MQRO_EXPIRATION_WITH_DATA
CMQC.MQRO_EXPIRATION_WITH_FULL_DATA
Confirm on arrival CMQC.MQRO_COA
CMQC.MQRO_COA_WITH_DATA
CMQC.MQRO_COA_WITH_FULL_DATA
Confirm on delivery CMQC.MQRO_COD
CMQC.MQRO_COD_WITH_DATA
CMQC.MQRO_COD_WITH_FULL_DATA
You can specify how the message ID is generated for the report or reply message:
You can specify one of the following to control how to set the correlation ID of the report or reply message:
You can specify the following to pass the discard option and exiry time of the original message to the report or reply message:
You can specify one of the following to control the disposition of the original message when it cannot be deleivered to the destination queue:
If no report options are specified, the default is
CMQC.MQRO_NEW_MSG_ID | CMQC.MQRO_COPY_MSG_ID_TO_CORREL_ID | CMQC.MQRO_DEAD_LETTER_Q.
-
messageType
public int messageType
Indicates the type of the message. The following values are currently defined:Application defined values can also be used; these should be in the range
MQMT_APPL_FIRST
toMQMT_APPL_LAST
.The default value of this field is CMQC.MQMT_DATAGRAM.
-
expiry
public int expiry
The expiry time (in tenths of a second). It is set by the application which puts the message. After a message's expiry time has elapsed, it is eligible to be discarded by the queue manager. If the message specified one of theCMQC.MQRO_EXPIRATION
flags, then a report is generated when the message is discarded.The default value is
CMQC.MQEI_UNLIMITED
, which means that the message never expires.
-
feedback
public int feedback
The nature of the feedback report. It is used with a message of typeCMQC.MQMT_REPORT
to indicate the nature of the report.The following feedback codes are defined:
CMQC.MQFB_EXPIRATION
CMQC.MQFB_COA
CMQC.MQFB_COD
CMQC.MQFB_QUIT
MQFB_NONE
CMQC.MQFB_SYSTEM_FIRST
CMQC.MQFB_APPL_CANNOT_BE_STARTED
CMQC.MQFB_TM_ERROR
CMQC.MQFB_APPL_TYPE_ERROR
CMQC.MQFB_STOPPED_BY_MSG_EXIT
CMQC.MQFB_XMIT_Q_MSG_ERROR
CMQC.MQFB_SYSTEM_LAST
CMQC.MQFB_ACTIVITY
CMQC.MQFB_MAX_ACTIVITIES
CMQC.MQFB_NOT_FORWARDED
CMQC.MQFB_NOT_DELIVERED
CMQC.MQFB_UNSUPPORTED_FORWARDING
CMQC.MQFB_UNSUPPORTED_DELIVERY
Application-defined feedback values in the range
CMQC.MQFB_APPL_FIRST
toCMQC.MQFB_APPL_LAST
can also be used.The default value of this field is
CMQC.MQFB_NONE
, indicating that no feedback is provided.
-
encoding
public int encoding
Specifies the representation used for numeric values in the application message data. This applies to binary, packed decimal and floating point data. The behaviour of the read and write methods for these numeric formats is altered accordingly.The following encodings are defined:
binary packed decimal floating point big-endian CMQC.MQENC_INTEGER_NORMAL
CMQC.MQENC_DECIMAL_NORMAL
CMQC.MQENC_FLOAT_IEEE_NORMAL
little-endian CMQC.MQENC_INTEGER_REVERSED
CMQC.MQENC_DECIMAL_REVERSED
CMQC.MQENC_FLOAT_IEEE_REVERSED
zSeries CMQC.MQENC_INTEGER_NORMAL
MQENC_DECIMAL_NORMAL
CMQC.MQENC_FLOAT_S390
Construct a value for the encoding field by combining one value from each row of the table by use of '+' or '|' operators. The default value is CMQC.MQENC_INTEGER_NORMAL | CMQC.MQENC_DECIMAL_NORMAL | CMQC.MQENC_FLOAT_IEEE_NORMAL. For convenience this value is also represented by CMQC.MQENC_NATIVE. This setting causes
MQMessage.writeInt()
to write, for example, a big-endian integer, andMQMessage.readInt()
to read a big-endian integer.A loss in precision can occur when converting from IEEE format floating point values to
zSeries format floating point values.
-
characterSet
public int characterSet
The coded character set identifier of character data in the application message data. It alters the behaviour ofMQMessage.readString()
,MQMessage.readLine()
andMQMessage.writeString()
.The default value for this field is
CMQC.MQCCSI_Q_MGR
. The following additional character set values are supported:- 850
- commonly used ASCII codeset
- 819
- the ISO standard ASCII codeset
- 37
- the American EBCDIC codeset
- 1200
- Unicode
- 1208
- UTF-8
-
unmappableAction
public java.nio.charset.CodingErrorAction unmappableAction
The action to be taken if character data cannot be encoded using the character set specifiedThe default value for this field is taken from system Java MQI, which can be configured via the Java system property: com.ibm.mq.cfg.jmqi.UnmappableCharacterAction The default Java MQI system value is used when the above Java system property has not been configured on the Java Runtime Environment and is java.nio.charset.CodingErrorAction.REPORT. Other java.nio.charset.CodingErrorAction constants are valid values.
-
unMappableReplacement
public byte[] unMappableReplacement
The byte sequence to be used if character data cannot be encoded using the character set specified and the unmappableAction is java.nio.charset.CodingErrorAction.REPLACE.
The default value for this field is taken from system Java MQI, which can be configured via the Java system property: com.ibm.mq.cfg.jmqi.UnmappableCharacterReplacement The default Java MQI system value is used when the above Java system property has not been configured on the Java Runtime Environment and is the UTF-8 representation of '?'.
The default Java replacement String will be used in decoding operations.
-
format
public java.lang.String format
A name which indicates the nature of the data in the message. It is set by the sender. You can use your own format names, but names beginning with the letters "MQ" have meanings that are defined by the queue manager.The queue manager built-in formats are:
CMQC.MQFMT_NONE
CMQC.MQFMT_ADMIN
CMQC.MQFMT_COMMAND_1
CMQC.MQFMT_COMMAND_2
CMQC.MQFMT_DEAD_LETTER_HEADER
CMQC.MQFMT_EVENT
CMQC.MQFMT_MD_EXTENSION
CMQC.MQFMT_PCF
CMQC.MQFMT_STRING
CMQC.MQFMT_TRIGGER
CMQC.MQFMT_XMIT_Q_HEADER
The default value is CMQC.MQFMT_NONE.
-
priority
public int priority
The message priority.The default value is
CMQC.MQPRI_PRIORITY_AS_Q_DEF
.
-
persistence
public int persistence
The message persistence. The following values are defined:The default value is
CMQC.MQPER_PERSISTENCE_AS_Q_DEF
-
messageId
public byte[] messageId
Specifies the message identifier of the message to be retrieved. This applies toMQQueue.get()
. Normally the queue manager returns the first message whose message identifier and correlation identifier match those specified. The special value CMQC.MQMI_NONE allows any message identifier to match.For
MQQueue.put()
this specifies the message identifier to use. If CMQC.MQMI_NONE is specified, the queue manager generates a unique message identifier when the message is put. The value of this field is updated after the put to indicate the message identifier that was used.The default value is CMQC.MQMI_NONE.
-
correlationId
public byte[] correlationId
Specifies the correlation identifier of the message to be retrieved. This applies toMQQueue.get()
. Normally the queue manager returns the first message whose message identifier and correlation identifier match those specified. The special value CMQC.MQCI_NONE allows any correlation identifier to match.For
MQQueue.put()
this specifies the correlation identifier to use.The default value is CMQC.MQCI_NONE.
-
backoutCount
public int backoutCount
The number of times the message has been backed out. This is the number of times the message has been returned byMQQueue.get()
, as part of a unit of work, and subsequently backed out.The default value is zero.
-
replyToQueueName
public java.lang.String replyToQueueName
The name of the queue to which a reply should be sent. The application that issued the get request for the message should send CMQC.MQFMT_REPLY and CMQC.MQFMT_REPORT messages to this queue.The default value is "" (empty string).
-
replyToQueueManagerName
public java.lang.String replyToQueueManagerName
The name of the queue manager to which reply or report messages should be sent.The default value is "" (empty string).
-
userId
public java.lang.String userId
The user ID. It is part of the identity of the message and identifies which user originated it.The default value is "" (empty string).
-
accountingToken
public byte[] accountingToken
The accounting token. This is part of the identity of the message and it allows work done as a result of the message to be appropriately charged.The default value is an array of zeros.
-
applicationIdData
public java.lang.String applicationIdData
Application ID data. This is part of the identity context of the message - information defined by the application suite; it can be used to provide additional information about the message or its originator.The default value is "" (empty string).
-
putApplicationType
public int putApplicationType
The type of application that put the message. The value can be defined by the system or by the user.The following values are defined by the system:
- MQC.MQAT_AIX
- MQC.MQAT_CICS
- MQC.MQAT_DOS
- MQC.MQAT_IMS
- MQC.MQAT_MVS
- MQC.MQAT_OS2
- MQC.MQAT_OS400
- MQC.MQAT_QMGR
- MQC.MQAT_UNIX
- MQC.MQAT_WINDOWS
- MQC.MQAT_JAVA
- MQC.MQAT_UNKNOWN
- MQC.MQAT_NO_CONTEXT
- MQC.MQAT_CICS_VSE
- MQC.MQAT_VMS
- MQC.MQAT_GUARDIAN
- MQC.MQAT_VOS
- MQC.MQAT_DEFAULT
- MQC.MQAT_NSK
- MQC.MQAT_CICS_BRIDGE
- MQC.MQAT_NOTES_AGENT
- MQC.MQAT_WINDOWS_NT
- MQC.MQAT_IMS_BRIDGE
- MQC.MQAT_XCF
The default value is the special value CMQC.MQAT_NO_CONTEXT, which indicates that no context information is present in the message.
-
putApplicationName
public java.lang.String putApplicationName
The name of the application that put the message.The default value is "" (empty string).
-
putDateTime
public java.util.GregorianCalendar putDateTime
The time and date when the message was put.
-
applicationOriginData
public java.lang.String applicationOriginData
Data about the originating application. This can be used by the application to provide additional information about the origin of the message.The default value is "" (empty string).
-
groupId
public byte[] groupId
The ID of the message group. This identifies the message group to which the message belongs.
-
messageSequenceNumber
public int messageSequenceNumber
Sequence number of logical message within group.
-
offset
public int offset
Offset of data in the physical message from the start of the logical message.
-
messageFlags
public int messageFlags
Flags controlling the segmentation and status of the message. Possible values are:
-
originalLength
public int originalLength
Original length of a segmented message.
-
-
Method Detail
-
getVersion
public int getVersion()
Gets the version of the message.- Returns:
- the version.
-
setVersion
public void setVersion(int version) throws MQException
Sets the version of the message.- Parameters:
version
- the value to be set - valid values are- com.ibm.mq.constants.CMQC.MQMD_VERSION_1
- com.ibm.mq.constants.CMQC.MQMD_VERSION_2
- Throws:
MQException
- if the value of the version is invalid.
-
-