java - 带有 Java 消息队列的消息驱动 Bean

标签 java glassfish jms message-driven-bean openmq

我在部署我的应用程序时遇到以下问题。

它使用 JMS 和远程 openMQ 在服务器之间进行通信。问题是连接不是完全可靠的,所以它可以打开或关闭。为了重新连接,我设置了 jms reconnect glassfish 属性,以便在连接丢失时重新连接。当我尝试部署应用程序但没有连接时出现问题。看起来它一直在重试连接,但应用程序在连接可用之前不会完成部署。

是否可以以任何方式配置它,即使没有连接,部署也会继续,并不断重试,直到有可用的连接?

非常感谢。

编辑:我试图在不同的线程中运行 MDB 初始化。我都试过了

我正在尝试通过两种方式更改 sun-ejb.jar.xml 来为 MDB 分配不同的线程

        <bean-pool>
            <steady-pool-size>1</steady-pool-size>
            <resize-quantity>1</resize-quantity>
            <max-pool-size>1</max-pool-size>
            <pool-idle-timeout-in-seconds>60</pool-idle-timeout-in-seconds>
        </bean-pool>

还有

        <use-thread-pool-id>a-new-thread-pool</use-thread-pool-id>

但是我运气不好。看起来它正在等待该线程结束,因为它看起来正在获取新线程,但它等待该线程结束以完成启动应用程序,因此,在我的情况下,应用程序未正确部署。

编辑 2 我也尝试在不同的线程中运行 jms 服务......

asadmin create-resource-adapter-config --threadpools a-new-thread-pool jmsra

也没有运气。

最佳答案

对于 glassfish 默认的 JMS 提供程序,这是不可能的。我终于设法通过将 JCA 适配器更改为

https://jmsjca.dev.java.net/

关于java - 带有 Java 消息队列的消息驱动 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2453313/

相关文章:

Java Spring Batch - 从 jar 执行

java - 匿名类——我们可以为同一个匿名类创建两个新对象吗?

java - 如何在 Java 中不断提示正确的用户输入?

jakarta-ee - 从概念上讲,EJB 层上的负载平衡如何在 Glassfish/任何 ejb 容器中工作

java - JMS 序列化/反序列化机制

java - 不稳定的 javax.jms.JMSException : Peer disposed

java - 如何在代码中创建 Apache Artemis 队列并将它们与 JMS 一起使用?

java - java中对线程的引用何时超出范围?

javascript - 我的 response.jsp 无法正确填充字段

java - Glassfish 5 可以与 java 10 一起运行还是仅与 java 8 兼容?