我正在尝试使用deq_condition(在Oracle Advance Queue中)使具有特定优先级的消息出队,但始终找不到消息。我尝试了以下方法:
dequeue_options.deq_condition := 'tab.priority = 10';
dequeue_options.deq_condition := 'priority = 10';
我还尝试过返回这样的真实条件:
dequeue_options.deq_condition := '1 = 1';
,但始终找不到消息,如果删除此条件,则会收到排队的消息。有什么主意吗?
答案 0 :(得分:0)
两个版本都是正确的
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
extension YourVC: UIGestureRecognizerDelegate{
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if gestureRecognizer == self.navigationController?.interactivePopGestureRecognizer && conditionToDisableTheGesture {
return false
}else{
return true
}
}
}
但是,如果您使用deq条件,则应注意dequeue_options.deq_condition := 'priority = 10';
参数。
最简单的选项是在出现异常后重复出队操作。 (队列快照将被重置)。
或添加dequeue_options.deq_condition := 'tab.priority = 10';
。
答案 1 :(得分:0)
简单检查队列中是否为具有给定优先级的消息。用aqtab
代替队列表名称
select * from aqtab where priority = 10 order by ENQ_TIME;
您很可能不会看到消息,因为此条件priority = 10
很简单地添加到执行出队的查询中。
请注意,要设置消息优先级,请使用消息属性
l_message_properties dbms_aq.message_properties_t;
简单分配所需的优先级...
l_message_properties.priority := 10;
...并将属性作为参数传递给DBMS_AQ.enqueue
在commit
之后,您应该使用上述查询在队列表中看到该消息,并且应该能够使用deq_condition