MQQueue.NET 类
使用 MQQueue 可发送和接收消息以及 IBM® MQ 队列的查询属性。 使用构造函数或 MQQueueManager.AccessProcess 方法创建 MQQueue 对象。
类
System.Object
|
└─ IBM.WMQ.MQBase
|
└─ IBM.WMQ.MQBaseObject
|
└─ IBM.WMQ.MQManagedObject
|
└─ IBM.WMQ.MQDestination
|
└─ IBM.WMQ.MQQueue
public class IBM.WMQ.MQQueue extends IBM.WMQ.MQDestination;
属性
获取属性时抛出 MQException 的测试。
public int ClusterWorkLoadPriority {get;}- 指定队列的优先级。 此参数仅对本地,远程和别名队列有效。
public int ClusterWorkLoadRank {get;}- 指定队列的列组。 此参数仅对本地,远程和别名队列有效。
public int ClusterWorkLoadUseQ {get;}- 指定当目标队列具有本地实例和至少一个远程集群实例时 MQPUT 操作的行为。 如果 MQPUT 源自集群通道,那么此参数不适用。 此参数仅对本地队列有效。
public DateTime CreationDateTime {get;}- 创建此队列的日期和时间。
public int CurrentDepth {get;}- 获取当前在队列中的消息数。 在 put 调用期间以及在回退 get 调用期间,此值递增。 在非浏览获取期间以及在回退 put 调用期间,将对其进行递减。
public int DefinitionType {get;}- 队列的定义方式。 可能的值为:
MQC.MQQDT_PREDEFINEDMQC.MQQDT_PERMANENT_DYNAMICMQC.MQQDT_TEMPORARY_DYNAMIC
public int InhibitGet {get; set;}- 控制您是可以获取此队列上的消息还是获取此主题的消息。 可能的值为:
MQC.MQQA_GET_INHIBITEDMQC.MQQA_GET_ALLOWED
public int InhibitPut {get; set;}- 控制是可以将消息放入此队列还是针对此主题。 可能的值为:
MQQA_PUT_INHIBITEDMQQA_PUT_ALLOWED
public int MaximumDepth {get;}- 队列中可同时存在的最大消息数。 尝试将消息放入已包含此大量消息的队列失败,原因码为
MQC.MQRC_Q_FULL。 public int MaximumMessageLength {get;}- 此队列中每条消息中可存在的应用程序数据的最大长度。 尝试放置大于此值的消息失败,原因码为
MQC.MQRC_MSG_TOO_BIG_FOR_Q。 public int NonPersistentMessageClass {get;}- 放入此队列的非持久消息的可靠性级别。
public int OpenInputCount {get;}- 当前对从队列中除去消息有效的句柄数。 OpenInputCount是本地队列管理器已知的有效输入句柄总数,而不仅仅是应用程序创建的句柄。
public int OpenOutputCount {get;}- 当前对将消息添加到队列有效的句柄数。 OpenOutputCount是本地队列管理器已知的有效输出句柄总数,而不仅仅是应用程序创建的句柄。
public int QueueAccounting {get;}- 指定是否可以对队列启用记帐信息收集。
public int QueueMonitoring {get;}- 指定是否可以对队列启用监视。
public int QueueStatistics {get;}- 指定是否可以对队列启用统计信息收集。
public int QueueType {get;}- 具有下列其中一个值的此队列的类型:
MQC.MQQT_ALIASMQC.MQQT_LOCALMQC.MQQT_REMOTEMQC.MQQT_CLUSTER
public int Shareability {get;}- 是否可以多次打开队列以进行输入。 可能的值为:
MQC.MQQA_SHAREABLEMQC.MQQA_NOT_SHAREABLE
public string TPIPE {get;}- 用于使用 IBM MQ IMS 网桥与 OTMA 通信的
TPIPE名称。 public int TriggerControl {get; set;}- 是否将触发器消息写入启动队列,以启动应用程序来为队列提供服务。 可能的值为:
MQC.MQTC_OFFMQC.MQTC_ON
public string TriggerData {get; set;}- 队列管理器插入到触发器消息中的自由格式数据。 当到达此队列的消息导致触发器消息写入启动队列时,它会插入 TriggerData 。 字符串的最大允许长度由
MQC.MQ_TRIGGER_DATA_LENGTH给出。 public int TriggerDepth {get; set;}- 当触发器类型设置为
MQC.MQTT_DEPTH时,在写入触发器消息之前必须在队列上的消息数。 public int TriggerMessagePriority {get; set;}- 消息不参与触发器消息生成的消息优先级。 即,队列管理器在决定是否生成触发器时忽略这些消息。 值为零将导致所有消息生成触发器消息。
public int TriggerType {get; set;}- 由于消息到达此队列而写入触发器消息的条件。 可能的值为:
MQC.MQTT_NONEMQC.MQTT_FIRSTMQC.MQTT_EVERYMQC.MQTT_DEPTH
方法
public void Get(MQMessage message);public void Get(MQMessage message, MQGetMessageOptions getMessageOptions);public void Get(MQMessage message, MQGetMessageOptions getMessageOptions, int MaxMsgSize);抛出 MQException。
从队列获取消息。
如果 get 失败,那么 MQMessage 对象保持不变。 如果成功,那么 MQMessage 的消息描述符和消息数据部分将替换为来自入局消息的消息描述符和消息数据。
从特定 MQQueueManager 对 IBM MQ 的所有调用都是同步的。 因此,如果执行带有等待的 get ,那么将阻止使用相同 MQQueueManager 的所有其他线程进行进一步的 IBM MQ 调用,直到完成 Get 调用为止。 如果需要多个线程同时访问 IBM MQ ,那么每个线程都必须创建自己的 MQQueueManager 对象。
message- 包含消息描述符和返回的消息数据。 消息描述符中的某些字段是输入参数。 确保根据需要设置 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。
将消息放入队列。
完成 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);message- 包含消息描述符数据和要发送的消息的 MQMessage 对象。 由于此方法,可以更改消息描述符。 在此方法完成后,消息描述符中的值是已放入队列或已发布到主题的值。
putMessageOptions- 用于控制 put 操作的选项。
注: 为了实现简单性和性能,如果要将单个消息放入队列,请使用 MQQueueManager.Put 对象。 您应该具有此对象的 MQQueue 对象。public void PutForwardMessage(MQMessage message);public void PutForwardMessage(MQMessage message, MQPutMessageOptions putMessageOptions);抛出 MQException
将正在转发的消息放入队列中,其中
message是原始消息。message- 包含消息描述符数据和要发送的消息的 MQMessage 对象。 由于此方法,可以更改消息描述符。 在此方法完成后,消息描述符中的值是已放入队列或已发布到主题的值。
putMessageOptions- 用于控制 put 操作的选项。
public void PutReplyMessage(MQMessage message)public void PutReplyMessage(MQMessage message, MQPutMessageOptions putMessageOptions)抛出 MQException。
将应答消息放入队列中,其中
message是原始消息。message- 包含消息描述符和返回的消息数据。 消息描述符中的某些字段是输入参数。 确保根据需要设置 MessageId 和 CorrelationId 输入参数非常重要。
putMessageOptions- 用于控制 put 操作的选项。
public void PutReportMessage(MQMessage message)public void PutReportMessage(MQMessage message, MQPutMessageOptions putMessageOptions)抛出 MQException。
将报告消息放入队列中,其中
message是原始消息。message- 包含消息描述符和返回的消息数据。 消息描述符中的某些字段是输入参数。 确保根据需要设置 MessageId 和 CorrelationId 输入参数非常重要。
putMessageOptions- 用于控制 put 操作的选项。
构造函数
public MQQueue MQQueueManager.AccessQueue(string queueName, int openOptions);public MQQueue MQQueueManager.AccessQueue(string queueName, int openOptions, string queueManagerName, string dynamicQueueName, string alternateUserId);抛出 MQException。
访问此队列管理器上的队列。
您可以获取或浏览消息,放置消息,查询队列的属性或设置队列的属性。 如果指定的队列是模型队列,那么将创建动态本地队列。 查询生成的 MQQueue 对象的
name属性以找出动态队列的名称。queueName- 要打开的队列的名称。
openOptions- 用于控制队列打开的选项。
MQC.MQOO_ALTERNATE_USER_AUTHORITY- 使用指定的用户标识进行验证。
MQC.MQOO_BIND_AS_QDEF- 对队列使用缺省绑定。
MQC.MQOO_BIND_NOT_FIXED- 请勿绑定到特定目标。
MQC.MQOO_BIND_ON_OPEN- 打开队列时将句柄绑定到目标。
MQC.MQOO_BROWSE- 打开以浏览消息。
MQC.MQOO_FAIL_IF_QUIESCING- 如果队列管理器正在停顿,那么失败。
MQC.MQOO_INPUT_AS_Q_DEF- 打开以使用队列定义的缺省值获取消息。
MQC.MQOO_INPUT_SHARED- 打开以获取具有共享访问权的消息。
MQC.MQOO_INPUT_EXCLUSIVE- 打开以获取具有独占访问权的消息。
MQC.MQOO_INQUIRE- 打开以进行查询-如果要查询属性,那么此选项是必需的。
MQC.MQOO_OUTPUT- 打开以放置消息。
MQC.MQOO_PASS_ALL_CONTEXT- 允许传递所有上下文。
MQC.MQOO_PASS_IDENTITY_CONTEXT- 允许传递身份上下文。
MQC.MQOO_SAVE_ALL_CONTEXT- 检索消息时保存上下文。
MQC.MQOO_SET- 打开以设置属性-如果要设置属性,那么此选项是必需的。
MQC.MQOO_SET_ALL_CONTEXT- 允许设置所有上下文。
MQC.MQOO_SET_IDENTITY_CONTEXT- 允许设置身份上下文。
queueManagerName- 定义队列的队列管理器的名称。 完全为空白或空的名称表示 MQQueueManager 对象所连接的队列管理器。
dynamicQueueName- 除非 queueName 指定模型队列的名称,否则将忽略
dynamicQueueName。 如果这样做,那么dynamicQueueName将指定要创建的动态队列的名称。 如果 queueName 指定模型队列的名称,那么空白或空名称无效。 如果名称中的最后一个非空白字符是星号*,那么队列管理器会将星号替换为字符串。 这些字符保证为队列生成的名称在此队列管理器上是唯一的。 alternateUserId- 如果在 openOptions 参数中指定了
MQC.MQOO_ALTERNATE_USER_AUTHORITY,那么alternateUserId指定用于检查打开权限的备用用户标识。 如果未指定MQC.MQOO_ALTERNATE_USER_AUTHORITY,那么alternateUserId可以留空或为空。
public MQQueue(MQQueueManager queueManager, string queueName, int openOptions, string queueManagerName, string dynamicQueueName, string alternateUserId);抛出 MQException。
访问
queueManager上的队列。您可以获取或浏览消息,放置消息,查询队列的属性或设置队列的属性。 如果指定的队列是模型队列,那么将创建动态本地队列。 查询生成的 MQQueue 对象的
name属性以找出动态队列的名称。queueManager- 要访问队列的队列管理器。
queueName- 要打开的队列的名称。
openOptions- 用于控制队列打开的选项。
MQC.MQOO_ALTERNATE_USER_AUTHORITY- 使用指定的用户标识进行验证。
MQC.MQOO_BIND_AS_QDEF- 对队列使用缺省绑定。
MQC.MQOO_BIND_NOT_FIXED- 请勿绑定到特定目标。
MQC.MQOO_BIND_ON_OPEN- 打开队列时将句柄绑定到目标。
MQC.MQOO_BROWSE- 打开以浏览消息。
MQC.MQOO_FAIL_IF_QUIESCING- 如果队列管理器正在停顿,那么失败。
MQC.MQOO_INPUT_AS_Q_DEF- 打开以使用队列定义的缺省值获取消息。
MQC.MQOO_INPUT_SHARED- 打开以获取具有共享访问权的消息。
MQC.MQOO_INPUT_EXCLUSIVE- 打开以获取具有独占访问权的消息。
MQC.MQOO_INQUIRE- 打开以进行查询-如果要查询属性,那么此选项是必需的。
MQC.MQOO_OUTPUT- 打开以放置消息。
MQC.MQOO_PASS_ALL_CONTEXT- 允许传递所有上下文。
MQC.MQOO_PASS_IDENTITY_CONTEXT- 允许传递身份上下文。
MQC.MQOO_SAVE_ALL_CONTEXT- 检索消息时保存上下文。
MQC.MQOO_SET- 打开以设置属性-如果要设置属性,那么此选项是必需的。
MQC.MQOO_SET_ALL_CONTEXT- 允许设置所有上下文。
MQC.MQOO_SET_IDENTITY_CONTEXT- 允许设置身份上下文。
queueManagerName- 定义队列的队列管理器的名称。 完全为空白或空的名称表示 MQQueueManager 对象所连接的队列管理器。
dynamicQueueName- 除非 queueName 指定模型队列的名称,否则将忽略
dynamicQueueName。 如果这样做,那么dynamicQueueName将指定要创建的动态队列的名称。 如果 queueName 指定模型队列的名称,那么空白或空名称无效。 如果名称中的最后一个非空白字符是星号*,那么队列管理器会将星号替换为字符串。 这些字符保证为队列生成的名称在此队列管理器上是唯一的。 alternateUserId- 如果在 openOptions 参数中指定了
MQC.MQOO_ALTERNATE_USER_AUTHORITY,那么alternateUserId指定用于检查打开权限的备用用户标识。 如果未指定MQC.MQOO_ALTERNATE_USER_AUTHORITY,那么alternateUserId可以留空或为空。