簡體   English   中英

將 Oracle 隊列與 UCP 結合使用

[英]Using Oracle queues with UCP

是否可以使用 UCP 創建 OracleConnection 以使用入隊方法?

如今,使用連接池將消息從 java 客戶端排入 Oracle AQ 隊列的最佳方法是什么?

來自 OracleDatasource 的 Javadoc 關於棄用緩存的建議並建議改為使用 UCP。 但是我試圖用它實例化一個連接,但是不可能將它轉換為 OracleConnection,我得到了一個代理異常。

似乎很清楚,UCP 旨在返回常見的 java 接口,如 Connection from sql package 並且不熟悉 Oracle 具體用例?

有人可以幫助我了解如何通過連接池使用 Oracle AQ 嗎?

謝謝你。

Java 依賴項:

  • Spring 引導:2.4.13
  • com.oracle.database.jdbc:ojdbc8:21.5.0.0
  • com.oracle.database.jdbc:ucp:21.5.0.0

Spring ucp屬性:

spring.datasource.type=oracle.ucp.jdbc.PoolDataSource
spring.datasource.oracleucp.connection-factory-class-name=oracle.jdbc.pool.OracleDataSource

異常信息:

java.lang.ClassCastException: oracle.ucp.jdbc.proxy.oracle$1ucp$1jdbc$1proxy$1oracle$1ConnectionProxy$2oracle$1jdbc$1internal$1OracleConnection$$$Proxy cannot be cast to oracle.jdbc.driver.OracleConnection

源代碼:

@Autowired
public InsertController(DataSource ds) {
  this.ds = ds;
}

private OracleConnection getConnection() throws Exception {
  Connection con = this.ds.getConnection();
  return (OracleConnection) con; //Proxy error propagation
}

您可以將 UCP 連接類型轉換為 oracle.jdbc.OracleConnection,然后調用下面的 API 使消息入隊。
public void enqueue(String queueName, oracle.jdbc.aq.AQEnqueueOptions opt, oracle.jdbc.aq.AQMessage mesg) throws SQLException;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM