首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UCP中使用Oracle队列

在UCP中使用Oracle队列
EN

Stack Overflow用户
提问于 2022-10-07 13:24:31
回答 1查看 111关注 0票数 1

是否可以使用UCP创建一个OracleConnection来使用enqueue方法?

现在,使用连接池从java客户机将消息排队到Oracle AQ队列的最佳方法是什么?

Javadoc来自OracleDatasource关于缓存弃用的建议,并推荐使用UCP。但是我尝试用它实例化一个连接,但是不可能将它转换为OracleConnection,我得到了一个代理异常。

很明显,UCP的设计是为了返回常见的java接口,比如从sql包返回连接,并且不熟悉Oracle特定的用例?

有人能帮我理解如何通过连接池使用Oracle AQ吗?

谢谢。

Java依赖关系:

2.4.13

  • com.oracle.database.jdbc:ojdbc8:21.5.0.0

  • com.oracle.database.jdbc:ucp:21.5.0.0

  • Spring Boot:

Spring ucp属性:

代码语言:javascript
复制
spring.datasource.type=oracle.ucp.jdbc.PoolDataSource
spring.datasource.oracleucp.connection-factory-class-name=oracle.jdbc.pool.OracleDataSource

异常消息:

代码语言:javascript
复制
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

源代码:

代码语言:javascript
复制
@Autowired
public InsertController(DataSource ds) {
  this.ds = ds;
}

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-07 18:30:42

您可以键入oracle.jdbc.OracleConnection的UCP连接,然后调用下面的API来对消息进行排队。

公共空队列(String queueName,oracle.jdbc.aq.AQEnqueueOptions opt,oracle.jdbc.aq.AQMessage mesg)抛出SQLException;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73987847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档