问题标签 [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 投票
1 回答
892 浏览

java - Oracle AQ Java 界面和自定义消息类型

我正在使用 AQ 的 Oracle Java 接口并希望将消息出列。这些消息由两个字段组成:

  • 唯一的行 ID。
  • 非唯一标识。

我使用这样的单个 RAW 有效负载成功解码了消息:

我记得读过某事。Java 接口不支持自定义类型。是这样吗?对应的AQQueueTableProperty呼叫会是什么样子,或者我是否需要在 SQL 中创建队列和队列表?出队操作的结果不能使用通常的 JDBCResultSet操作映射到 Java 表示吗?

0 投票
1 回答
2424 浏览

sql-server - SQL Server 是否具有类似于 Oracle Streams 高级队列的功能?

Oracle Streams AQ(高级队列)提供高度可扩展的数据库支持的队列功能。SQL Server(任何版本)中是否存在等效功能?

注意:我的意思不是简单地将表用作队列,而是特定供应商提供的对数据库平台的增强。

0 投票
2 回答
2703 浏览

oracle - Oracle Advanced Queuing 中不相关消息的选择性出队

这个问题是指Oracle Streams Advanced Queuing中的消息出列。

我需要确保按顺序处理彼此相关的消息。

例如,假设队列中包含四个消息,这些消息具有称为事务引用 (txn_ref) 的业务相关字段,并且其中两个消息 (1,3) 属于同一事务 (000001):

还假设我正在运行 4 个希望从该队列中出列的线程/进程。应发生以下情况:

  1. 线程 1 出列消息 #1
  2. 线程 2 出列消息 #2
  3. 线程 3 将消息 #4 出列(因为消息 #3 与 #1 相关,而 #1 尚未完成)。
  4. 线程 4 块等待消息
  5. 线程 1 提交消息 #1 的工作
  6. 线程 4(或者线程 1)使消息 #3 出列。

我最初的想法是,我可以通过出列条件来实现这一点,其中 ENQ_TIME(入队时间)不晚于具有相同 TXN_REF 的所有消息的任何其他 ENQ_TIME。但我的问题是如何引用我尚未选择的消息的 TXN_REF 以便选择它。例如

有可能在这里实现我想要的吗?

0 投票
2 回答
1081 浏览

oracle - Oracle AQ 的重新排队

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

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

谢谢

0 投票
1 回答
1159 浏览

database - 在出队过程中会话终止后 Oracle AQ 消息丢失

我在 Oracle 11g R2 Windows 2008 R2 数据库上遇到 DBMS_AQ.deQueue 问题。当会话执行出队并在此之后(在提交或回滚之前)被终止时,特定消息将从队列中永久删除。我希望它仍然在队列中,或者至少在异常队列中。我执行以下步骤进行测试:

  1. 从会话 1 入队并提交。(见下面的代码)
  2. 从会话 2 中出列。(参​​见下面的代码)
  3. 会话 1:从 MY_Q_T 中选择 * -> 我的消息在这里仍然可见。
  4. 会话 2:从 MY_Q_T 中选择 * -> 我的消息不再可见。
  5. 终止会话 2(出队)会话。
  6. 会话 1:从 MY_Q_T 中选择 * -> 我的消息不再可见。消息丢失。

这是一个错误吗?由于出队(/可见性)未设置为自治,我希望在会话 2 被终止时消息仍在队列中。任何解决方法的想法?

用于入队和出队的代码:

排队

出队

0 投票
2 回答
6523 浏览

sql - Oracle SQL 查询仅在一个进程中失败:“ORA-01405: fetched column value is NULL”

我正在尝试在我构建的“插件”中调用系统存储过程。当我在测试应用程序中测试我的插件时,它工作正常。当我在为其构建它的目标应用程序中运行插件时,我从 Oracle 得到一个没有任何意义的异常。

我正在使用 Oracle 服务器 11.2.0.1.0 和 ODP.NET 2.112.2.0。

这是来自我的测试应用程序的 ODP.NET 的调试跟踪:

这是来自 ODP.NET 的调试跟踪,来自目标应用程序中运行的相同代码:

我不知道测试/目标应用程序之间可能有什么不同。这两个进程都作为本地管理员组的成员运行。两者都使用相同的连接字符串。两者都运行相同的 .NET 代码,但与数据库服务器的结果不同。这里会发生什么?

0 投票
2 回答
509 浏览

oracle - 针对 10g 数据库使用 Oracle 11g 客户端进行 Oracle 高级队列是个好主意吗?

我正在为客户端开发一些集成软件,其中包括 C#、NServiceBus 和 Oracle 10g(客户端和服务器)。要求是我需要为 NServiceBus 开发一个新插件来创建 ITransport 的实现,它是消息的排队机制。所以 Oracle Advanced Queuing 用于此。我已经为 Oracle 11g(客户端和服务器)中的高级队列编写代码做了很多工作,但是查看 ODP.Net 10g 似乎缺少或不存在队列支持,因此这可能证明是有问题的。

我的问题是这样的:

我知道您可以针对 10g 数据库服务器使用 11g 客户端,但对于 Oracle Advanced Queuing 来说这是一个好主意吗?我需要了解哪些问题?

非常感谢。

0 投票
0 回答
305 浏览

c# - 如何使用 C# 从 Oracle 8i 收听消息队列

通过为消息队列安装 Oracle ODAP,我能够在 C# 中使用 Oracle 11g 使用消息队列 API。我有一个基于 Oracle 8i 构建的旧系统的升级项目。基本上我无法更改现有系统,因此我正在考虑通过插入表触发器添加消息队列事件。但我想知道是否有办法在 C# 中收听该消息队列。

当前的 oracle 网站没有为 oracle 8i 提供 ODAC。但我想知道他们是否有支持或黑客来做到这一点?

对此的替代方法是每 1 秒进行一次轮询以监视表。你怎么看?

注意:我读到 java 可以通过 JMS 做到这一点,但要求是在 C# 中使用。 看这里

0 投票
2 回答
6204 浏览

java - MessageListener 不监听 Oracle 队列中的消息

我已经实现了 Oracle 高级队列,并且正在编写一个侦听器程序。以下是我的示例:

}

请注意,这个程序是一个独立的程序,它将继续运行并监听 oracle 队列中的消息。

不幸的是,当我创建一个此类文件的 jar 并运行它时,它只是运行然后退出并仅使用队列中的 1 条消息。为什么监听器不继续运行并监听队列?

我认为它会继续侦听并检索队列中的所有消息,然后将永远保持在侦听模式,但它的行为并非如此。

感谢有人能告诉我出了什么问题。

谢谢

0 投票
1 回答
1905 浏览

database - 当应用程序离线时如何使排队的消息出列(Oracle 高级队列)

我有2个问题。以下是场景——

有2个不同的进程进程A和进程B。进程A入队消息队列中的消息。进程 B 从消息队列中取出消息。

1) 进程 B 关闭一段时间,但进程 A 继续将消息排入队列。当进程 B 重新上线时,当进程 B 离线时,如何将进程 A 发布的消息队列中的消息出列?

2)我使用的队列是多个消费者队列,因为需要有超过 1 个进程 B 才能使消息出队。设计背后的原因是,如果一个进程 B 死亡,另一个进程 B 仍然可以继续处理消息。同时,如果进程 B 的 1 个实例接收到一条消息,它应该通知其他进程 B 不处理该消息。

我找不到任何样品。任何帮助是极大的赞赏。