1、简介
Oracle AQ是Oracle数据库中集成的一种消息队列机制,可以用于不同应用程序之间的消息交互,例如PL/SQL可以通过相应的Package访问队列、C#应用程序可以通过ODP.NET访问队列、Java应用程序则可以通过OJMS访问队列。AQ内部是通过数据库现实的(即消息实际上是存储在数据库表中)。
高级队列的应用范围非常广泛。除了提供消息在Oracle数据库和应用程序以及用户之间传送消息的功能之外,利用Oracle Net Service 消息还可以在Oracle数据库的客户端和服务端之间或两个数据库之间以及一个Oracle队列到另一个队列之间传递。而且,基于HTTP/HTTPS或SMTP等传输协议,我买还可以通过Internet执行高级队列操作。此外Oracle高级队列通过消息处理网关可以实现同现存的非Oracle消息系统无缝集成。
另外,由于Oracle高级队列集成于数据库,它便具有一些其他消息队列所不具备的特殊优势:
- 它的操作继承了数据库的所有优点,例如可靠性、完整性、高可用性、安全性以及可伸缩性等。
- 消息管理方便,由于采用数据库表存储消息,因此用户可以利用标准的SQL语句访问消息信息,包括消息的属性、历史消息、消息负载。同样可以对消息进行审计和跟踪,利用索引可以更好的优化消息管理。
- 同其他数据库表一样,队列表可以被导入、导出。
2、传递机制
Oracle 高级队列的具体消息传递机制大致如下:
消息“生产者”把消息装入队列(称为Enqueue,入列),消息“消费者”从队列中取消(称为Dequeue,出列)。
队列表已数据库表的形式存在,队列存储在队列表中。
3、点对点
点对点消息针对特定目标,每条消息仅由一个接收者使用。
4、发布-订阅
发布 - 订阅消息传递具有广泛的传播模式 - 广播 - 以及更狭隘的目标模式 - 多播,也称为点对多点。