当前位置: 首页 > 知识库问答 >
问题:

骆驼事务:MQ会话在每次提交时关闭

丌官绍元
2023-03-14

我有:

    < Li > Camel route(transactioned = true),从MQ队列消费 < li >使用Spring的websphereowtransactionmanager < li >事务性起作用 < li >在IBM Liberty上运行

但是,我收到以下消息:

Setup of JMS message listener invoker failed for destination 'MY.QUEUE' - trying to recover. 
Cause: Local JMS transaction failed to commit; nested exception is com.ibm.msg.client.jms.DetailedIllegalStateException: 
MQJCA1020: The session is closed.
The application attempted to use a JMS session after it had closed the session.
Modify the application so that it closes the JMS session only after it has finished using the session.

这似乎与另一个堆栈溢出问题有关,但我已经尝试更改服务器中的配置。xml,但没有成功。

共有1个答案

乐刚毅
2023-03-14

您可以尝试设置cacheLevelName=CACHE_CONSUMER,这允许重用JMS使用者,并避免无休止地创建/销毁JMS资源,如错误消息所示。

您可以在 Camel JMS 文档中查看有关缓存级别导入的更多信息:http://camel.apache.org/jms

 类似资料:
  • 有一条骆驼路线,它被处理,异常由处理。代码如下所示: 它是有效的,并且在错误被处理后,事务有一个提交:,但是然后消息再次被放入输入队列中,事务从头开始(无尽循环)。 我们正在使用IBM MQ,我认为这种回滚是由MQ执行的,而不是从camel路线执行的。所以问题是:我能告诉MQ我处理了异常,并且它不应该再次回滚吗?

  • 问题内容: 这些方法之间有什么区别,哪种更好?到现在为止,我的代码如下: 但是在运行上述代码时,记录并不总是被删除(精确地:id = 1永远不会被删除,而其他id总是被删除)。我读到保持打开的会话可以稍微加快应用程序的速度- 这就是为什么我要共享会话对象。我的业务对象通过DI获取会话工厂: 问题答案: 根据我在Hibernate的经验,得出的结论是,最好的策略是使Hibernate会话寿命与单个事

  • 我使用的是Camel 2.16.1。关闭后,骆驼的消费者仍然接受新消息。有没有办法迫使消费者立即停止消费。这里也有同样的问题:驼峰关机策略:飞行中的信息不会减少 我为这个问题创建了一个测试用例: 运行测试用例时,我们可以看到机上交换的数量在开始优雅关闭后增加:

  • 我正在寻找一些关于如何使用骆驼路线实现以下模式的想法: 客户端通过HTTP restendpoint调用web服务(originalService) 服务接受服务的主体,并将其作为作业提交给另一个web服务(jobService)。此辅助服务返回作业id。 使用作业id,originalService轮询jobService的时间不超过x秒。Originalservice将把提交的服务的结果返回给

  • 目前我们在Drools Camel Server 5.5.0;我们想升级到新版本。当我检查Drools下载页面时,它显示6.4是最新的,并且没有Drools Camel服务器版本。我发现为KIE执行服务器提供的描述与drools Camel Server特性相似。Drools服务器是否重命名为KIE执行服务器?

  • 我正在用JPA和Hibernate做一些简单的测试,当我不希望的时候,我碰巧关闭了EntityManager。 这是我的测试主: DB助手: 实体和对应的DAO: 在商店里,当开始交易时,我得到以下信息: 未执行关机方法。为什么实体管理器关闭? 为了完整起见,以下是persistence.xml: