我有一个表,当表中新增数据时,想用触发器向外部程序发消息,然后外部程序按照消息的类型分别做处理。这个处理可能是:向网络上的订阅者发送消息,这些订阅者可能是离线的。
看了些文章,知道可以写dll,然后像使用存储过程那样调用外部函数。
我应该怎么实现?我应该把上述功能全部写到这个dll中,由触发器调用?还是存在一个外部程序,等待从触发器发来的消息,然后由这个代理程序向网络上的订阅者发消息?
oracle如何向外部程序发消息?我看到的文章有提到,1.使用从PL/SQL调用一个HTTP来激活一个Java Servlet。 2.使用高级排队(AQ)功能来激活一个消息驱动的bean (MDB)。 还有管道 Alarm Notification等方法让我十分困惑。

解决方案 »

  1.   

    建议用方法2,看下stream的知识,可以直接捕获变化,并放在队列里,你可以用java直接去取队列里的消息即可,也可以用MDB方式取。
      

  2.   

    我看了下stream,好像不是直接相关,我只要知道这个消息是怎么发的就行了,有没有什么api可以用?哪里有c的示例
      

  3.   

    你可以看看这些资料:
    Oracle Streams  Advanced Queuing User's Guide
    Oracle Advanced Application Developer's Guide
    Oracle          Application Developer's Guide
    Oracle Call     Interface  Programmer's Guide