Oracle AQ 的重新排队

发布于 2024-11-06 07:28:29 字数 524 浏览 6 评论 0原文

我正在尝试将通用 pl/sql 写入(重新)排队已排队的消息(以任何状态出现在队列表中)。

当在队列上启用出队时它工作正常,因此我可以首先在浏览模式下出队,以便填充 DBMS_AQ.message_properties_t 并从现有消息加载。但是当出队被禁用时我怎样才能获取这些呢?

  DBMS_AQ.enqueue(
       queue_name          => fine,
       enqueue_options     => fine,
       message_properties  => how from existing message,
       payload             => how from existing message 
                                     (probably can select, not big deal),
       msgid               => fine);

谢谢

I am trying to write universal pl/sql to (re)enqueue message already enqueued (present in queue table in whatever state).

It works fine when dequeue is enabled on the queue so I can dequeue first in browse mode in order to populate DBMS_AQ.message_properties_t and load from existing message. But how can I fetch those when dequeue is disabled?

  DBMS_AQ.enqueue(
       queue_name          => fine,
       enqueue_options     => fine,
       message_properties  => how from existing message,
       payload             => how from existing message 
                                     (probably can select, not big deal),
       msgid               => fine);

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暗恋未遂 2024-11-13 07:28:29

Oracle 网站上有一个很好的示例说明如何执行此操作:
http://download.oracle.com/docs/cd /B10500_01/appdev.920/a96587/apexampl.htm

基本上,您可以以非破坏性方式“出队”(IE出于浏览目的而出队)。因为您没有出列,所以消息仍然保留在原处。

There is a great example of how to do this on Oracle's site:
http://download.oracle.com/docs/cd/B10500_01/appdev.920/a96587/apexampl.htm

Basically you can "dequeue" in a non destructive fashion (IE dequeue for purposes of browsing). Because you aren't dequeuing though, the message still stay in place.

鲜血染红嫁衣 2024-11-13 07:28:29

无论是在浏览还是删除模式下,您必须启用出列才能获取消息:

begin
   sys.dbms_aqadm.start_queue('[QUEUE_NAME]', true, true);
end;
/

You HAVE to enable DEQUEUING in order to get a message, no matter if in browse or remove mode:

begin
   sys.dbms_aqadm.start_queue('[QUEUE_NAME]', true, true);
end;
/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文