问题标签 [advanced-queuing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5545 浏览

oracle - 以编程方式检查 Oracle AQ 队列是否存在

我们有一个基于 Oracle AQ 的消息传递系统——它运行良好,入队和出队没有任何问题。

现在我们收到了在启动前和运行时添加一些健全性检查的请求,例如“检查提供的 db-user 的队列是否确实存在”和“定期检查队列中的消息量”。

后者似乎很容易解决,查找队列,计算消息数量,但第一个让我很奇怪。浏览文档和 中的可用方法DatabaseMetaData,我看不到在不尝试入队/出队的情况下实际检查这一点的方法。数据库告诉我有关表、键、模式等的所有信息,但我终生无法找到队列。奇怪的是,我也找不到队列表,尽管这些可能根本不是经典方式的“表”。

我错过了什么吗?信息不可用还是在其他地方?

0 投票
1 回答
353 浏览

oracle - 在 Oracle 数据库上创建 jms 映射消息时出现异常

我正在尝试创建映射类型的 JMS 消息并将其排入队列。但是这样做时我收到以下错误

我使用的 SQL 看起来像这样

该问题似乎是由v_id := v_msg.clear_body(-1);通话引起的。我不知道如何解决这个问题,因为相同的配置确实适用于短信类型。但这不使用 id 参数(所以我不需要调用 clear_body)。

至于我的队列配置,我使用以下设置

谁能说出导致此异常的原因?
提前致谢。

0 投票
2 回答
812 浏览

c# - Oracle 高级队列 - 出列提交/回滚

我们正在尝试使用 Oracle AQ 在 .NET 4.7 中为我们的应用程序构建一个排队系统。

基本上,我们的问题是我们希望将出队过程包装在包含其他指令的上层事务中,并且能够在执行 queue.Dequeue() 指令后“手动”提交或回滚。

到目前为止,这只适用于入队:

使用相同的方法,我们正在尝试执行

然后提交或回滚,但这似乎不起作用。这是出列片段:

出队总是提交事务并从队列中永久删除消息,即使在执行回滚而不是提交时也是如此。任何人都知道为什么它不能与出队一起使用?

0 投票
1 回答
592 浏览

sql - 根据开始日期和结束日期每月分配金额

我有桌子

例如:

我需要返回 SQL 12 行,每行代表两个日期之间的月份-年份,预算值 = 1200 / 两个日期之间的月份数“12”= 100$

所以结果是这样的 Proj_ID , START_DATE , END_DATE , AMOUNT

  • "1","2017 年 1 月 1 日","2017 年 1 月 31 日",100 美元
  • "1","2017 年 2 月 1 日","2017 年 2 月 27 日",100 美元
  • "1","2017 年 3 月 1 日","2017 年 3 月 31 日",100$
  • "1","2017 年 4 月 1 日","2017 年 4 月 31 日",100$
  • "1","2017 年 5 月 1 日","2017 年 5 月 31 日",100 美元
  • "1","2017 年 6 月 1 日","2017 年 6 月 31 日",100$
  • "1","2017 年 7 月 1 日","2017 年 7 月 31 日",100$
  • “1”,“2017 年 8 月 1 日”,“2017 年 8 月 31 日”,100 美元
  • "1","2017 年 9 月 1 日","2017 年 9 月 31 日",100$
  • "1","1-OCT-2017","31-OCT-2017",100$
  • "1","2017 年 11 月 1 日","2017 年 11 月 31 日",100 美元
  • "1","2017 年 12 月 1 日","2017 年 12 月 31 日",100 美元
0 投票
1 回答
2054 浏览

oracle - 如何从 PL/SQL 向 Oracle AQ 消息队列上的主题发布消息

我知道我可以使用 JMS TopicPublisher 从 java 代码将消息发布到给定主题到 Oracle AQ 队列(有大量文档和示例),但我确实需要从 PL/SQL 代码发布消息到给定主题到Qracle AQ 队列。我找不到有关如何执行此操作的文档或示例。可能吗?有人能给我指出正确的文档或样本位置吗???

任何帮助表示赞赏,

扬·范德克洛克

0 投票
1 回答
468 浏览

jms - 使用多线程侦听器处理 JMS 事务和重新传递

我正在使用 JMS 在 Java 1.8 SE 环境中处理消息。消息源自 Oracle 高级队列。因为处理一条消息可能需要一段时间,所以我决定有一个由 5 个工作线程(MessageHandler 对象)组成的池,这样就可以一次处理多个线程。我想保证没有重复的消息传递。

我用

创建 QueueSession。我使用下面的代码来处理传入的消息。基本上,onMessage产生一个处理消息的线程。

我的问题是我不知道如何向原始队列指示处理是否已成功完成。我无法在 结束时提交onMessage,因为线程可能尚未完成处理。我也不认为我目前拥有commits 和rollbacks 的地方有什么好处。例如,如果 5 个工作线程处于不同的完成状态,那么正在提交的队列会话的状态是什么?

我想我一定错过了一些关于如何以多线程方式处理 JMS 的基本概念。任何帮助将非常感激。

0 投票
1 回答
68 浏览

oracle - 我们同时完成数据库和 JMS 处理是聪明还是幸运?

我们使用 JMS 在 Java 1.8 SE 环境中处理消息。消息来自 Oracle (12) 高级队列。

我们想从 JMS 队列中读取一条消息,根据它做一些工作,并将结果保存在数据库中。我们不想丢失任何消息,也不想重复处理任何消息。换句话说,我们希望 JMS 消息和相关数据库活动的处理成为单个事务。

我们已经阅读了有关如何执行此操作的各种文章(包括JMS 中的事务和重新传递JMS 消息传递可靠性和确认模式具有事务的可靠 JMS)。共识似乎是使用 JTA/XA,但我们希望使用更简单的东西。

我们使用 Oracle 的 Advanced Queuing 作为我们的 JMS 提供程序,因此我们决定看看我们是否可以为 JMS 和数据库活动使用相同的数据库连接,以便单个提交对 JMS 和数据库活动都有效。它似乎奏效了。

在下面的代码中,我们在初始化 JMS 队列时使用现有的 SQL 连接创建了一个 QueueConnection。处理完消息后,提交 JMS 会话也会提交数据库更改。我们还没有看到其他地方讨论过这种方法,所以我们想知道是否

  1. 我们有一个适用于 Oracle 高级队列的可靠解决方案,
  2. 我们有一个解决方案碰巧在这个版本的 Oracle Advanced Queueing 中工作,
  3. 我们的测试用例真的非常非常幸运,而这种方法充满了危险

请评论我们的方法是否应该可靠或者我们是否应该使用 JTA/XA。

0 投票
1 回答
252 浏览

oracle - 如何使用 AQDequeueOption?

我看过少数帖子,其中包含AQDequeueOption在从 Oracle 高级队列中出列时使用的代码,并且我看到了一些关于它的少量 JavaDoc。我没有看到任何关于它的一般信息,并且在 Oracle® Database Advanced Queuing User's Guide, 12c Release 2 (12.2) 中根本没有提到它。

任何人都可以指出一些关于它的解释性信息吗?例如,它是否仅作为 的参数提供dequeue,还是也可以以其他方式使用,例如,以QueueReceiver某种方式使用?

0 投票
1 回答
208 浏览

oracle - 是否可以使用 JDBC 从 ANYDATA 同步捕获队列中出列?

我想要做的是使用Synchronous Capture从 Java 进程订阅 Oracle 表中的所有更改。

ANYDATA 队列是用

然后我使用Dequeue 中的代码,使用 Java for Oracle 11g 队列作为示例。我正在尝试做

但我得到的只是oracle.AQ.AQOracleSQLException:创建描述符时出错:Invalid arguments。事实证明,我已经对其进行了一些调试,因为 ANYDATATypeDescriptor.getTypeDescriptor()将返回不被视为StructDescriptor.isValidObject().

我使用瘦 JDBC AQ 进行了另一次拍摄:

我在这里面临一个新的独特问题。这个 OPAQUE 有getDescriptor().getTypeName() == "XMLTYPE",所以我很想把它转成 XML。但是有一个问题:只有瘦JDBC驱动支持AQ,而只有ACI驱动支持OPAQUE转XML。我Only LOB or String Storage is supported in Thin XMLType尝试做的时候出错了new XMLType(opq)

如何使用 JDBC 从 AQ获取同步捕获 XML ?

0 投票
1 回答
54 浏览

oracle - 如何确定 AQjmsDestination 的状态?

我们使用 JMS 在 Java 1.8 SE 环境中处理消息,使用底层 Oracle (12) 高级队列。On 可以启动一个队列,指定是否允许入队和出队:

第二个参数表示是否启用入队,而第三个参数表示是否启用出队。但是,如果给定一个AQjmsDestination对象,我看不出如何确定在 Java 中是否启用了入队或出队。有人知道吗?