使用 Oracle AQ 请求-回复

Request-reply with Oracle AQ

我想使用 Oracle AQ 实施 request-reply 模式。基本上 "requestor" 会:

  1. 排队请求消息。
  2. 获取为请求消息生成的消息 ID。
  3. 将回复消息从队列中取出,在 dequeue options 中指定 correlation 属性 作为原始请求消息的消息 ID。

原来在DBMS_AQ.ENQUEUE程序中,returns原始消息ID是RAW的msgid OUT参数,而相关属性 的出列选项是 VARCHAR2(128).

实现它的正确方法是什么?

虽然我害怕简单地尝试将 RAW 转换为 VARCHAR2(毕竟,如果 API 的 return 是 RAW,对我来说,这意味着字节可以不一定对应于特定字符集中的字符串),似乎只是使用 TO_CHAR 将 RAW msgId 转换为 VARCHAR2 的问题。奇怪的是,如果您尝试使用 UTL_RAW.CAST_TO_VARCHAR.

它不起作用

我会继续使用这种方法,尽管它并不能使我 100% 有信心。