Oracle AQ出列令

时间:2009-11-19 15:11:42

标签: java oracle advanced-queuing

Oracle 10g中的触发器为常规表中的行子集生成upsert和delete消息。这些消息包含两个字段:

  • 唯一的行ID。
  • 非唯一身份证。

在使用这些消息时,我想对deque进程强加一个遵守以下约束的命令:

  • 邮件必须按插入顺序出列。
  • 属于相同id的消息必须以这样的方式出列,即其他出列过程不应该能够使用该id对可能的后继消息(或多个消息)出列。由于消息是使用触发器生成的,因此无法使用组。

我正在使用Oracle Java接口进行AQ。有关如何实现这一目标的任何指示?

1 个答案:

答案 0 :(得分:2)

我认为默认的出队顺序是先进先出,因此它们将按入队顺序排队。

对于你的第二点,你是说你要序列化非唯一ID上的队列?即,您的队列中基本上有很多队列,并且您只希望一个作业在任何时候从每个队列中消耗消息?

即你有消息:

1 | a
2 | a
3 | b
4 | a

这里有两种类型的记录(a和b),你希望1个作业消耗所有的a和另一个消耗所有的b。如果是这种情况,可考虑创建多个队列吗?

多个队列失败,看看你传递给出列程序的dequeue_options_t类型 - 最值得注意的是dequeue_condition - 这允许你只选择特定的消息,这样你就可以为所有a和另一个所有人开始一个工作。 b等。