Message 物件代表應用程式所傳送或接收的一則訊息。IMessage 是 IMapMessage 等訊息類別的超類別。
IBM.XMS.IPropertyContext | +----IBM.XMS.IMessage
有關 Message 物件中的 JMS 訊息標頭欄位清單,請參閱XMS 訊息中的標頭欄位。有關 JMS 所定義的 Message 物件內容清單, 請參閱JMS 定義的訊息內容。有關 IBM 所定義的 Message 物件內容清單,請參閱IBM 定義的訊息內容。
訊息會由記憶體回收器刪除。當刪除訊息時, 會釋放它所用的資源。
.NET 內容 | 說明 |
---|---|
JMSCorrelationID | 以 String 物件形式取得和設定訊息的相互關係 ID。 |
JMSDeliveryMode | 取得和設定訊息的遞送模式。 |
JMSDestination | 取得和設定訊息的目的地。 |
JMSExpiration | 取得和設定訊息的有效期限。 |
JMSMessageID | 以封裝訊息 ID 的 String 物件形式,取得和設定訊息的訊息 ID。 |
JMSPriority | 取得和設定訊息的優先順序。 |
JMSRedelivered | 取得訊息是否正在重新遞送的指示, 並指出訊息是否正在重新遞送。 |
JMSReplyTo | 取得和設定訊息回覆將送往的目的地。 |
JMSTimestamp | 取得和設定訊息的傳送時間。 |
JMSType | 取得和設定訊息的類型。 |
PropertyNames | 取得訊息之名稱內容的列舉表。 |
DeliveryMode JMSDeliveryMode { get; set; }
訊息的遞送模式值可為下列之一:
如果是尚未傳送的新建訊息,遞送模式為 DeliveryMode.Persistent,但如果是和分配管理系統間的即時連線, 則遞送模式會是 DeliveryMode.NonPersistent。如果是已接收的訊息, 方法會傳回當初在傳送訊息時由 IMessageProducer.send() 呼叫所設的遞送模式, 除非接收端應用程式因設定 JMSDeliveryMode 而變更了遞送模式。
IDestination JMSDestination { get; set; }
目的地是在傳送訊息時由 IMessageProducer.send() 呼叫所設。會忽略 JMSDestination 的值。不過, 您可以使用 JMSDestination 來變更已接收之訊息的目的地。
如果是尚未傳送的新建訊息, 方法會傳回一個空值 Destination 物件, 除非傳送端應用程式因設定 JMSDestination 而設定了一個目的地。如果是已接收的訊息, 方法會傳回當初在傳送訊息時由 IMessageProducer.send() 呼叫所設之目的地的 Destination 物件, 除非接收端應用程式因設定 JMSDestination 而變更了目的地。
Int64 JMSExpiration { get; set; }
有效期限是在傳送訊息時由 IMessageProducer.send() 呼叫所設。其值的計算方式是, 傳送端應用程式指定的存活時間加上送出訊息的時間。有效期限是以毫秒表示, 並從 1970 年 1 月 1 日 00:00:00 GMT 開始。
如果是尚未傳送的新建訊息,則有效期限為 0, 除非傳送端應用程式因設定 JMSExpiration 而設定了一個不同的有效期限。如果是已接收的訊息, 方法會傳回當初在傳送訊息時由 IMessageProducer.send() 呼叫所設的有效期限, 除非接收端應用程式因設定 JMSExpiration 而變更了有效期限。
如果存活時間為 0, 則 IMessageProducer.send() 呼叫會將有效期限設為 0,表示該訊息沒有期限。
XMS 會捨棄過期的訊息,而不會遞送給應用程式。
Int32 JMSPriority { get; set; }
優先順序是在傳送訊息時由 IMessageProducer.send() 呼叫所設。此值為一個 0(最低優先順序)到 9(最高優先順序)範圍間的整數。
如果是尚未傳送的新建訊息, 則優先順序為 4, 除非傳送端應用程式因設定 JMSPriority 而設定了一個不同的優先順序。如果是已接收的訊息, 方法會傳回當初在傳送訊息時由 IMessageProducer.send() 呼叫所設的優先順序, 除非接收端應用程式因設定 JMSPriority 而變更了優先順序。
Boolean JMSRedelivered { get; set; }
取得訊息是否正在重新遞送的指示, 並指出訊息是否正在重新遞送。此指示是在接收訊息時由 IMessageConsumer.receive() 呼叫所設。
這個內容的值可為:
若為和分配管理系統間的即時連線, 此值一律是 False。
在傳送訊息前由 JMSRedelivered 所設的重新遞送指示會被 IMessageProducer.send() 呼叫忽略, 並在接收訊息時由 IMessageConsumer.receive() 呼叫所取代。不過,您可以使用 JMSRedelivered 來變更已接收之訊息的指示。
Int64 JMSTimestamp { get; set; }
時間戳記是在傳送訊息時由 IMessageProducer.send() 呼叫所設, 是以毫秒表示,並從 1970 年 1 月 1 日 00:00:00 GMT 開始。
如果是尚未傳送的新建訊息,則時間戳記為 0, 除非傳送端應用程式因設定 JMSTimestamp 而設定了一個不同的時間戳記。如果是已接收的訊息, 方法會傳回當初在傳送訊息時由 IMessageProducer.send() 呼叫所設的時間戳記, 除非接收端應用程式因設定 JMSTimestamp 而變更了時間戳記。
方法 | 說明 |
---|---|
Acknowledge | 確認此訊息以及階段作業所收到的所有先前未確認的訊息。 |
ClearBody | 清除訊息的主體。 |
ClearProperties | 清除訊息的內容。 |
PropertyExists | 檢查訊息是否含有一個指定名稱的內容。 |
void Acknowledge();
如果階段作業的確認模式為 AcknowledgeMode.ClientAcknowledge, 則應用程式可呼叫這個方法。如果階段作業具有其他任何的確認模式或者為交易式, 則會忽略方法的呼叫。
已收到但未確認的訊息可能會重新遞送。
如需確認訊息的相關資訊, 請參閱在階段作業中確認收到訊息。
void ClearBody();
如果應用程式清除訊息主體, 該主體所處的狀態和新建訊息中的空主體一樣。新建訊息中之空主體的狀態視訊息主體的類型而定。如果需要詳細資訊,請參閱XMS 訊息的主體。
不論訊息主體處於何種狀態, 應用程式隨時都可以將它清除。如果訊息主體為唯讀, 應用程式唯一能寫入主體的方法是先清除主體。