这是我的情况。
我希望在使用托管队列的持久订阅上有待处理消息的浏览功能(因此我无法直接访问订阅的队列)。
如果这是一个队列,我只会使用像
这样的东西remoteDestination = session.QueueManager.AccessQueue(
remoteQueueName,
MQC.MQOO_BROWSE // request browse mode
+ MQC.MQOO_FAIL_IF_QUIESCING // but not if MQM stopping
+ MQC.MQOO_INQUIRE // request inquire permissions to read stats
);
但是,在durablesub'd主题上,没有可用的BROWSE标志
remoteDestination = session.QueueManager.AccessTopic(
remoteTopicName,
remoteTopicObject,
MQC.MQOO_BROWSE //can not use an MQOO option here!!!
+ MQC.MQSO_CREATE // create the topic if not already created
+ MQC.MQSO_ANY_USERID // allow any user to reattach to this subscription in the future
// otherwise, only the user who created the subscription can reattach
+ MQC.MQSO_ALTER // create (or reattach) to subscription requesting rights to make changes
+ MQC.MQSO_FAIL_IF_QUIESCING // if the server is shutting down, fail
+ MQC.MQSO_DURABLE // the subscription is durable
+ MQC.MQSO_MANAGED, // the queue manager will create consup
"", // alternate user ID
subscriptionName // name of the subscription
);
Sooooo,我只是想知道这是否可行?我猜测应用程序必须有一些方法可以告诉它在重新连接之前从持久订阅中消费的消息是什么以及有多少消息!?
请注意,所有这一切的目的是允许服务应用程序在遇到问题时向其交互式用户显示其持久订阅中的所有“待处理”消息。
提前感谢任何可以提供帮助的人!
干杯, 克里斯
答案 0 :(得分:2)
您可以查询订阅以获取关联的托管队列的名称,然后使用常规方法浏览或查询该队列。对于持久订阅,没有浏览API是正确的。