问题标签 [oracle-aq]

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 投票
1 回答
1045 浏览

jndi - 使用 Oracle AQ 队列配置 Web Logic JMS 模块

我测试设置一个可以使用 Oracle AQ JMS 实现的 Web 逻辑服务器,但由于某种原因,我的 WLS 连接池看不到我创建的队列,我可以看到在 Web 逻辑中查找队列的唯一方法是使Web 逻辑数据源连接池使用创建队列的数据库用户的凭据。

我以 admin_user 身份完成了以下操作:

创建了一个队列表

创建了一个队列

开始排队

授予 CPOOL 用户权限

在 Web Logic 中设置 2 个 JDBC 数据源 我在 Web 逻辑中设置了 2 个连接到我的数据库的数据源,除了一个使用cpool用户而另一个使用admin_user之外,两者都是相同的

创建 JMS 模块 现在我使用 JDBC 数据源注册一个 jms 模块,并连接本地和外部 JDNI 名称。

如果我使用使用admin_user的 DataSource,一切正常,我部署的应用程序可以在 JNDI 中找到队列。

问题 如果我使用使用cpool的数据源,那么它会在 JNDI 中找不到连接池,但找不到队列(尽管它对 admin_user 有效)。我从 WL 收到以下错误:

有谁知道为什么 WL 无法解析队列的 JNDI 名称,除非我将 admin_user 帐户用于我的数据源。

0 投票
1 回答
3033 浏览

weblogic - Java Cannot dequeue a message from Oracle AQ

I'm trying to deploy an application in weblogic which is based on a Spring DefaultMessageListenerContainer. I have set up weblogic using a foreign server to provide access to the AQ connection factory and destination under JNDI names.

I have a simple message listener which logs the messages it receives (just a test), I wrap this message listener in a Spring DMLC shown below:

Whenever I try deploy this application in weblogic I get the following exception from the DMLC:

Does anyone know how to resolve this so that java can receive the messages on the queue?

Thanks

0 投票
1 回答
1413 浏览

oracle - 为什么 OracleAQ 将死订户留在队列中?

这是 Oracle 11.2.0.3。

我们在使用 Oracle 的 JMS 而不是 OracleAQ 时遇到了问题。这工作正常,除了我们开始注意到队列被填满 1000 条消息,然后随着时间的推移数百万条消息。其中一些处于 PROCESSED 状态,但大多数处于就绪状态。我们将此行为追溯到该主题的“僵尸”或死亡订阅者。当 Java 进程终止并且没有机会注销自己时,它会将订阅者记录留在队列中,而 ORacle 似乎没有检测到它已经死亡。以至于 MONTHS 之后,发送到我们的多订阅者队列的新消息将乘以订阅者的数量,它认为这比实际要高得多。(当我们达到最大订阅者限制时,我们首先注意到了这一点。)

我们已经运行了 qmon 进程——我什至尝试增加最小进程数以使其无效。只要队列中没有死订阅者,队列清理就会非常顺利。

任何人都看到过这个,并希望找到一个解决方案?

0 投票
2 回答
1792 浏览

oracle - 带有 ODP.Net 的 Oracle AQ。连接时自动出列

我正在使用 Oracle ODP.Net 进行入队和出队。

进程 A:入队进程 B:使用 MessageAvailable 事件出队

如果进程 A 和 B 正在运行,则没有问题。在“进程 B”上,事件总是被触发。

但是,如果“进程 B”处于关闭状态而“进程 A”处于打开状态,则当“进程 B”重新启动时,在关闭期间插入的队列将丢失。

是否可以选择为过去插入的所有队列触发事件?

非常感谢

0 投票
1 回答
691 浏览

spring - Spring JMS Oracle AQ - 指定出队选项

我正在将 Spring JMS 用于 Oracle AQ。如何指定出队选项?我想指定consumer名称和dequeue_mode选项。

0 投票
0 回答
167 浏览

jms - 如何将jms主题消息移动到oracle AQ

我们如何使用java代码将jms主题的消息排入oracle AQ?

0 投票
1 回答
2419 浏览

jms - Oracle AQ - 如何确定侦听器是否正在侦听队列

如果我设置了 AQ,但我的侦听器(Mule JMS 端点)没有收到任何消息。是否有我可以查询以确定 Oracle 认为哪些侦听器连接到队列的视图?)。

0 投票
2 回答
20384 浏览

java - 从哪里获取 11.2.0.3 的 Oracle jar 文件 - xdb、aq、i18n、xmlparser

我正在尝试更新旧版 Java 应用程序以与 Oracle 11g 版本 11.2.0.3 兼容。

该应用程序在 Oracle 10g 版本 10.2.0.4 上运行并使用 Oracle 高级队列。它声明了 Maven 依赖项:

  • 水 10.2.0.4.0
  • xdb 10.2.0.4.0
  • xmlparser 10.2.0.4.0
  • i18n 10.2.0.4.0

我正在努力为 11g 找到相同的文件,特别是 11.2.0.3。我环顾了各个地方,例如我的 Oracle 主目录、JDeveloper 安装和在线,发现各种名称和版本的 jar 文件令人眼花缭乱,这些都是候选但不是我需要的。

谁能告诉我在哪里可以找到正确的 jar 文件?

看来现在aqJDBC驱动里面有一些类了,但是包名从oracle.aq变成了oracle.jdbc.aq. 虽然我很高兴进行一些重构,但我希望有信心在继续之前这样做是正确的。这里的任何建议都是有价值的。

编辑: 当尝试使用混搭的版本运行时,我设法找到我在尝试运行应用程序单元测试时收到以下错误:

编辑:orai18n.jar通过下载和xdb6.jarOracle 的 Oracle 数据库 11g 第 2 版 JDBC 驱动程序页面 ,设法解决了在我的单元测试中导致错误的问题。但是,我仍然缺少aqand xmlparser

编辑: 找到看起来很有希望的 Oracle XDK 主页xmlparser,但是在一个明显的地方没有可用的下载。

0 投票
0 回答
948 浏览

transactions - 使用 JMS 从 AQ 出列 ADT(用户类型)消息

我需要通过 JMS 使用带有 ADT 有效负载消息的 Oracle AQ。入队很简单(请参阅文章http://blog.nominet.org.uk/tech/2007/10/04/spring-jms-with-oracle-aq/):

MyMessageCreator 将 myADTMessage(使用 jpub 创建)包装到 Message 中。它在事务中工作正常 - 异常回滚 enquing 并且消息没有插入到队列中。

问题始于出队。我必须同步接收消息,所以第一次尝试是:

我得到“必须为具有 ADT 有效负载的目的地指定 JMS-137 有效负载工厂”

我找不到该问题的解决方案,因此我尝试手动初始化底层对象:

其中 aqConnectionFactory 是自动装配的 Spring bean。

消息已正确出列,但在本地 jms 事务中!如果没有 queueSession.commit() 他们留在队列中,当我将创建会话更改createQueueSession(false, Session.AUTO_ACKNOWLEDGE)为时,出队正在自动提交模式下执行。

所以我在这里卡住了。有谁知道,如何使用 JmsTemplate 通过 receive() 方法将 ADT 类型消息出列,或者如何将 AQjmsSession 推送到现有事务中?

0 投票
2 回答
10375 浏览

oracle11g - oracle 触发器执行 DBMS_AQ 获取权限不足错误

我正在使用 oracle 11.2。

数据库用户:

  1. AQADM:用户拥有队列,并拥有AQ_ADMINISTRATOR_ROLE
  2. SCOTT:jms 用户,具有以下权限。

我有以下存储过程,它编译好。它是从表上的触发器调用的。

我有以下 GRANT 给用户

当我执行上述存储过程或更新触发触发器代码的表时,出现以下错误:

编辑: 这是特权视图,所有都被授予 SYS 作为 SYSDBA 在此处输入图像描述在此处输入图像描述