【问题标题】:Propagating message's through multiple queues通过多个队列传播消息
【发布时间】:2017-04-23 13:32:07
【问题描述】:
是否可以通过几个队列传播消息? f.e.我有两个远程和本地数据库,在远程我有一个 aq 表 AQ1,在本地我有两个 aq 表 AQ2 和 AQ3。是否可以安排从 AQ1 到 AQ2 再从 AQ2 到 AQ3 的传播,所以我在 AQ2 中从 AQ1 收到的消息会自动传播到 AQ3?
我问这个是因为我有这个问题,当消息从 AQ1 传播到 AQ2 时,它不会自动传播到 AQ3。当我查看user_queue_schedules 时,甚至没有触发到 AQ3 的传播。但是,如果我将消息排队到 AQ2,它确实会传播到 AQ3。
【问题讨论】:
标签:
oracle
plsql
propagation
advanced-queuing
【解决方案1】:
当您考虑传播时,当您将消息传播到另一个队列时,它会将消息排入该队列并且应该触发传播到第三个队列,这有点合乎逻辑。但是,当您更好地考虑传播的工作原理时,不应该触发到第三个队列的传播是合乎逻辑的。如果您在消息的入队过程中未指定收件人,则传播会采用订阅该 aq 表的默认代理并向它们发送消息,因此它将消息排入第二个队列,收件人是该队列,因此无法将消息传播到第三个队列,因为该队列不是收件人。解决方法是在消息入队到第二个队列时添加回调过程,以将该消息出队并将其入队到第三个队列。或者简单地创建一个作业,每隔几秒钟运行一次,将新消息出列并将它们排入第三个队列。
如果我对此有误,请告诉我。