问题标签 [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 回答
927 浏览

activemq - ActiveMq 和 Oracle AQ 桥接错误

我正在尝试将 AQ 中的消息提取到 ActiveMq 中的主题中。我按照以下说明操作: http: //activemq.apache.org/jms-bridge-with-oracle-aq.html。但是当我启动 ActiveMQ 时,我得到了这个错误:

此错误的原因是什么以及如何解决?

0 投票
2 回答
334 浏览

oracle - 您能否确保任何时候只有一个客户端连接到 Oracle AQ?

我们有一个 Oracle AQ 队列引发事件。

我们有 Java Oracle AQ 客户端处理这些事件。

出于灾难恢复的目的,我们有另一个客户端始终处于关闭状态。但是,当 DR 练习让第二个客户端继续运行时,我们遇到了一些案例,这使我们损失了事件。

是否有任何方式以编程方式或使用配置来确保队列中只有订阅者。

0 投票
1 回答
228 浏览

java - 如何将 AQMessage STRUCT 对象转换为 UDT 对象

尝试从 Java 中的 oracle AQ 队列中读取带有 UDT 有效负载的消息。我使用 jpub 在数据库中为我的 Oraacle UDT/Object(名为 MESSAGE_TYP 的对象)创建 java 类。

jpub 输出:

然后 deuque 消息并获取 STRUCT:

那么我该如何获得具体的 message_typ 对象引用呢?

0 投票
1 回答
2079 浏览

oracle - dbms_aq.dequeue_array,第一条消息返回两次

介绍

使用 Oracle Advanced Queuing 方法时,我的 Oracle SQL Server(确切地说:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production)遇到了一个非常奇怪的行为。

问题

错误是我将X消息排入队列,但 dequeue_array 返回X+1消息,第一条消息被重复(如 MessageId 所示)。

复制:

我能够编写一些简单的 PoC 来重现错误。这段代码非常简单,入队/出队的东西是标准的 Oracle AQ。代码执行以下步骤两次(测试运行):

  • 清除队列表
  • 将 X 消息排入队列
  • 使用 dbms_aq.dequeue_array 调用将所有消息出列
  • 检查有多少消息已出队

在新连接上运行 POC 时,第一次运行成功且没有错误,但随后的每次运行都失败。之后,当使用相同的连接时,每次执行脚本都会在两次测试运行中失败。

到目前为止我尝试了什么:

  • 在“新”连接上运行此脚本:只有第一次运行失败
  • 在同一连接上对脚本的任何额外执行:所有运行都失败
  • 使用/创建新队列时:只有第一次运行失败
  • 当使用“从 <queue_table> 中删除”而不是 dbms_aqadm.purge_queue_table() 时:一切都很好
  • 使用“正常”的一对一出队时:一切都很好

结论:

我既不能解释这种行为,也不能在我的代码中找到错误。请看一下,它应该可以在您喜欢的 sql 客户端中直接执行(使用 PL/SQL Developer 测试)。

如果您需要任何进一步的信息或在使 PoC 工作时遇到问题,请询问,我会定期检查此线程。我试图使 PoC 尽可能可读,包括关于正在发生的事情的详细输出。

代码:

示例输出:

0 投票
1 回答
2639 浏览

spring-integration - 与 Oracle AQ 的 Spring 集成

我正在尝试学习 Spring Integration,为此我想创建一个这样的应用程序:

从 Oracle 我发送消息(在 Oracle Queue 上),此消息将从 Java 应用程序(使用 Spring Integration 构建)中截获,应用程序将根据收到的消息发送一封电子邮件。该消息将包含收件人: - 抄送:和要发送的文本。

为了进行这种交流,我决定使用 JMS(我认为在 Oracle 中这是使用 Oracle AQ 制作的)。

在数据库中,我已经创建了队列,现在我正在尝试创建一个简单的 applicationContext.xml 来启动此握手。

在网上看,我发现很少有关于此的文章(Spring Integration + Oracle AQ)而且我遇到了一些错误。主要错误是这样的:java.lang.ClassNotFoundException: oracle.jms.AQjmsFactory

现在这是我的 applicationContext.xml

也许我正在使用“旧”技术(例如我第一次看到这个org.apache.commons.dbcp.BasicDataSource

不幸的是,我对 Spring Integration 很陌生,而且我第一次看到 Oracle 队列(我使用 Oracle 工作,但从未使用过任何类型的队列)。

关于如何进行的一些建议将不胜感激:)

编辑 1 要解决有关 AQjmsFactory 的问题,需要包含 aqapi.jar

0 投票
0 回答
857 浏览

oracle - 无法链接 oracle/jms/AQjmsGenMessage_C

我正在尝试使用 Spring JDBC Extensions 和 Apache Camel 链接 AQ 和 JBOSS 应用程序。我想我的 Spring 配置是正确的,但是当我使用oracleXE 安装提供的ojdbc6和jar 运行它时,我收到以下错误aqapi

JBWEB000287:将上下文初始化事件发送到类 org.springframework.web.context.ContextLoaderListener 的侦听器实例的异常:org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名称为“aq”的 bean 时出错 [camel-config. xml]:在设置 bean 属性 'connectionFactory' 时无法解析对 bean 'connectionFactory' 的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“connectionFactory”的 bean 时出错:FactoryBean 在创建对象时抛出异常;嵌套异常是 java.lang.LinkageError: Failed to link oracle/jms/AQjmsGenMessage_C

ojdbc6如果我把罐子换成ojdbc14我会走得更远。但是,当打开连接时,它不是getConnection呼叫的正确版本。我怀疑这是由于库不兼容,但证明我可能是正确的。

我们需要保留jndi数据源有 3 个原因

  1. 密码需要从保险库中获取,这更容易
  2. 正如配置所示,我们正在使用休眠在同一连接上的同一数据库中进行额外处理,因此保持相同的数据连接是必不可少的
  3. 我们需要扩展,因此使用JBOSS数据源管理似乎是一个合乎逻辑的选择。

对此的任何想法都非常受欢迎。

这是我camel-context和弹簧的配置

附加信息 通过跟踪 ojdbc14.jar 我得到

由于应用程序无法启动,因此没有 ojdbc6.jar 的跟踪信息。

Edit2: 我换回 ojdbc6.jar 并注意到 war 文件在 WEB-INF/lib 文件夹中缺少此文件。正确添加它,现在与 ojdbc14.jar 的情况相同。

我可以运行 tojms servlet,但通过 getConnection 提取连接时遇到同样的问题。堆栈跟踪的相关部分似乎是

0 投票
1 回答
129 浏览

oracle-aq - 使用 Oracle AQ 请求-答复

我想使用 Oracle AQ实现请求-回复模式。基本上,“请求者”会:

  1. 将请求消息排入队列。
  2. 获取为请求消息生成的消息 ID。
  3. 将回复消息出列,在出列选项中将相关属性指定为原始请求消息的消息 ID。

事实证明,在 DBMS_AQ.ENQUEUE 过程中,返回原始消息 ID 的 msgid OUT 参数是RAW,而出队选项的相关属性是VARCHAR2(128)

实现它的正确方法是什么?

0 投票
1 回答
488 浏览

oracle - Oracle OSB 代理服务错误

我创建了一个使用 Oracle AQ 创建队列的 jms 消费代理服务。并且代理服务被路由到业务服务,该服务将相同的消息排入使用 orace AQ 创建的不同队列中。代理服务运行良好,消息被放入目标队列,但其抛出错误消息如下

处理端点代理服务的传入消息时出现意外故障

而且我认为由于错误,服务正在重试,并且消息被发布到目标队列 16 次。

请帮我解决这个问题。

谢谢。

0 投票
1 回答
937 浏览

hibernate - 使用 AQ 时 JDBC 池上的 JDBC 连接泄漏

我们使用来自 spring-data 的 Oracle AQ 支持在同一数据源上同时使用 JMS 和 JDBC,使用本地事务而不是 XA。我们设置的大图基本上是参考手册中描述的:关于 orcl:aq-jms-connection-factory: use-local-data-source-transaction="true" 和 native-jdbc-extractor="oracleNativeJdbcExtractor “ HibernateTransactionManager(我现在正在尝试将单个数据源(DBCP2 基本数据源)用于 AQ 和 Hibernate)。我正在使用 Camel JMS 组件(通过使用来自 spring 的 hibernate 事务管理器和连接工厂)进行 JMS 操作。一切正常,但几分钟后,我们得到指示 JDBC 连接池已用尽并且一切都卡住了。在 JDBC 连接池监视器中,我们可以看到所有正在使用的连接:所以显然有些东西正在泄漏连接。几分钟后用尽游泳池。同样的帖子在这里: https://jira.spring.io/browse/DATAJDBC-8

0 投票
0 回答
107 浏览

oracle11g - Oracle 数据库对某些 MQ 客户端的更改

嗨,Oracle DB 伙计们,有没有办法将数据库中的 DML 更改传播到某个 MQ 服务器(在我的例子中是 Kafka)。我已经阅读了以下内容,但找不到任何具体的实现

oracle 流:- 用于数据库到数据库的复制

oracle strams AQ:- 用于与 MQ 客户端集成

GoldenGate:由于成本,我们无法使用