MQDestination.NET 类
使用 MQDestination 可访问 MQQueue 和 MQTopic通用的方法。 MQDestination 是抽象基类,无法实例化。
类
属性
获取属性时抛出 MQException 的测试。
public DateTime CreationDateTime {get;}创建队列或主题的日期和时间。 此属性最初包含在 MQQueue中,但已移动到基本 MQDestination 类中。
无缺省值。
public int DestinationType {get;}- 用于描述所使用的目标类型的整数值。 从子类构造函数 MQQueue 或 MQTopic初始化,此值可以采用下列其中一个值:
MQOT_QMQOT_TOPIC
无缺省值。
方法
-
public void Get(MQMessage message); public void Get(MQMessage message, MQGetMessageOptions getMessageOptions);public void Get(MQMessage message, MQGetMessageOptions getMessageOptions, int MaxMsgSize);抛出 MQException。
如果目标是 MQQueue 对象,那么从队列中获取消息; 如果目标是 MQTopic 对象,那么从主题中获取消息,并使用 MQGetMessageOptions 的缺省实例来执行获取。
如果获取失败,那么 MQMessage 对象保持不变。 如果成功,那么 MQMessage 的消息描述符和消息数据部分将替换为来自入局消息的消息描述符和消息数据。
从特定 MQQueueManager 对 IBM MQ 的所有调用都是同步的。 因此,如果执行带有等待的获取,那么将阻止使用相同 MQQueueManager 的所有其他线程进行进一步的 IBM MQ 调用,直到完成 Get 调用为止。 如果需要多个线程同时访问 IBM MQ ,那么每个线程都必须创建自己的 MQQueueManager 对象。
- 消息
- 包含消息描述符和返回的消息数据。 消息描述符中的某些字段是输入参数。 确保根据需要设置 MessageId 和 CorrelationId 输入参数非常重要。
- getMessageOptions
- 控制获取操作的选项。
使用选项
MQC.MQGMO_CONVERT可能会导致在从单字节字符代码转换为双字节代码时发生异常,原因码为MQC.MQRC_CONVERTED_STRING_TOO_BIG。 在这种情况下,会将消息复制到缓冲区中而不进行转换。如果未指定
getMessageOptions,那么使用的消息选项为MQGMO_NOWAIT。如果在可重新连接的客户机中使用
MQGMO_LOGICAL_ORDER选项,那么将返回MQRC_RECONNECT_INCOMPATIBLE原因码。 - MaxMsgSize
- 此消息对象要接收的最大消息。 如果队列上的消息大于此大小,那么将发生以下两种情况之一:
- 如果在 MQGetMessageOptions 对象中设置了
MQGMO_ACCEPT_TRUNCATED_MSG标志,那么将使用尽可能多的消息数据来填充消息。 抛出异常时带有MQCC_WARNING完成代码和MQRC_TRUNCATED_MSG_ACCEPTED原因码。 - 如果未设置
MQGMO_ACCEPT_TRUNCATED_MSG标志,那么消息将保留在队列中。 抛出异常时带有MQCC_WARNING完成代码和MQRC_TRUNCATED_MSG_FAILED原因码。
如果未指定
MaxMsgSize,那么将检索整个消息。 - 如果在 MQGetMessageOptions 对象中设置了
public void Put(MQMessage message);public void Put(MQMessage message, MQPutMessageOptions putMessageOptions);抛出 MQException。
如果目标是 MQQueue 对象,那么将消息放入队列; 如果目标是 MQTopic 对象,那么将消息发布到主题。
完成 Put 调用后对 MQMessage 对象的修改不会影响 IBM MQ 队列或发布主题上的实际消息。
Put 会更新 MQMessage 对象的 MessageId 和 CorrelationId 属性,并且不会清除消息数据。 进一步的 Put 或 Get 调用引用 MQMessage 对象中的更新信息。 例如,在以下代码片段中,第一条消息包含a和第二条ab。msg.WriteString("a"); q.Put(msg,pmo); msg.WriteString("b"); q.Put(msg,pmo);- 消息
- 包含消息描述符数据和要发送的消息的 MQMessage 对象。 由于此方法,可以更改消息描述符。 在此方法完成之后,消息描述符中的值是已放入队列或已发布到主题的值。
- putMessageOptions
- 用于控制 put 操作的选项。
注: 为了实现简单性和性能,如果要将单个消息放入队列,请使用 MQQueueManager.Put 对象。 您应该具有此对象的 MQQueue 对象。