Jboss7.x Spring jms侦听器配置-Websphere MQ资源适配器7.5-JBoss EAP 6.2

Jboss7.x Spring jms侦听器配置-Websphere MQ资源适配器7.5-JBoss EAP 6.2,jboss7.x,ibm-mq,spring-jms,Jboss7.x,Ibm Mq,Spring Jms,我在找人帮忙 上下文: 应用程序配置 JBoss EAP 6.2 WebSphere MQ 7.5资源适配器 弹簧 当前状态: /profile=myapp/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=myappListenerQCF:read-resource(include-defaults=true,recursive=true) { "outcome" =&

我在找人帮忙

上下文:

  • 应用程序配置
  • JBoss EAP 6.2
  • WebSphere MQ 7.5资源适配器
  • 弹簧
当前状态:

/profile=myapp/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=myappListenerQCF:read-resource(include-defaults=true,recursive=true)
{
    "outcome" => "success",
    "result" => {
        "allocation-retry" => undefined,
        "allocation-retry-wait-millis" => undefined,
        "background-validation" => false,
        "background-validation-millis" => undefined,
        "blocking-timeout-wait-millis" => undefined,
        "class-name" => "com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl",
        "enabled" => true,
        "flush-strategy" => "FailingConnectionOnly",
        "idle-timeout-minutes" => undefined,
        "interleaving" => false,
        "jndi-name" => "java:/jms/myappListenerQCF",
        "max-pool-size" => "100",
        "min-pool-size" => "100",
        "no-recovery" => false,
        "no-tx-separate-pool" => false,
        "pad-xid" => false,
        "pool-prefill" => "true",
        "pool-use-strict-min" => "true",
        "recovery-password" => undefined,
        "recovery-plugin-class-name" => undefined,
        "recovery-plugin-properties" => undefined,
        "recovery-security-domain" => "wsmq_security",
        "recovery-username" => undefined,
        "same-rm-override" => undefined,
        "security-application" => false,
        "security-domain" => "wsmq_security",
        "security-domain-and-application" => undefined,
        "use-ccm" => true,
        "use-fast-fail" => false,
        "use-java-context" => true,
        "use-try-lock" => undefined,
        "wrap-xa-resource" => true,
        "xa-resource-timeout" => undefined,
        "config-properties" => {
            "hostName" => {"value" => "mqserverhostname"},
            "port" => {"value" => "1520"},
            "channel" => {"value" => "channelname"},
            "transportType" => {"value" => "CLIENT"},
            "queueManager" => {"value" => "qmname"}
        }
    }
}
/profile=myapp/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=workflowInputQueue:read-resource(include-defaults=true,recursive=true)
{
    "outcome" => "success",
    "result" => {
        "class-name" => "com.ibm.mq.connector.outbound.MQQueueProxy",
        "enabled" => true,
        "jndi-name" => "java:/jms/workflowInputQueue",
        "use-java-context" => true,
        "config-properties" => {"baseQueueName" => {"value" => "QUEUE.IN"}}
    }
}
应用程序可以正常发送消息,但除非我们“增加”与消息消耗相关的连接数,否则日志中将弹出一条警告消息:

WARN[org.springframework.jms.listener.DefaultMessageListenerContainer](org.springframework.jms.listener.DefaultMessageListenerContainer#0-28)目标“jms/workflowInputQueue”的jms消息侦听器调用程序安装失败-尝试恢复。原因:MQJCA1018:每个连接只允许一个会话。

研究结果:

经过一些研究,我从以下两个环节确定了根本原因, 并在这里引用 这里呢

问题的根本原因可以概括如下:

对于入站通信,JMS连接池和JMS会话池由WebSphere MQ JCA资源适配器实现

我在找什么: 我以前没有Spring方面的知识,我的任务通常集中在Linux/Unix管理、应用服务器设置和配置上

我想:

  • jms监听器(MDP)的示例配置,其中有些指示可以在JBoss中配置什么,哪些不能在spring或其他xml配置中配置,哪些应该配置(激活规范就是一个示例)
  • 我可以阅读更多的资料来更好地理解spring配置
  • 关于如何在Spring配置中引用资源适配器的一些说明,同时wmq.jmsra.rar资源适配器已上载到JBoss内容存储库中,并分配给与应用程序相同的服务器组
理想的溶液形式:

  • 一个示例Spring配置(基于xml),带有资源适配器、ActivationSpec、MessageEndpointListener或(jca-?)侦听器容器,可以很好地概述所需的配置
  • 可能会解释如何在JBos中定义所有这些配置,并通过jndi查找在spring中引用这些配置
我已经通过JBoss社区论坛问过这个问题,但没有收到太多反馈

当前有问题的配置:

/profile=myapp/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/connection-definitions=myappListenerQCF:read-resource(include-defaults=true,recursive=true)
{
    "outcome" => "success",
    "result" => {
        "allocation-retry" => undefined,
        "allocation-retry-wait-millis" => undefined,
        "background-validation" => false,
        "background-validation-millis" => undefined,
        "blocking-timeout-wait-millis" => undefined,
        "class-name" => "com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl",
        "enabled" => true,
        "flush-strategy" => "FailingConnectionOnly",
        "idle-timeout-minutes" => undefined,
        "interleaving" => false,
        "jndi-name" => "java:/jms/myappListenerQCF",
        "max-pool-size" => "100",
        "min-pool-size" => "100",
        "no-recovery" => false,
        "no-tx-separate-pool" => false,
        "pad-xid" => false,
        "pool-prefill" => "true",
        "pool-use-strict-min" => "true",
        "recovery-password" => undefined,
        "recovery-plugin-class-name" => undefined,
        "recovery-plugin-properties" => undefined,
        "recovery-security-domain" => "wsmq_security",
        "recovery-username" => undefined,
        "same-rm-override" => undefined,
        "security-application" => false,
        "security-domain" => "wsmq_security",
        "security-domain-and-application" => undefined,
        "use-ccm" => true,
        "use-fast-fail" => false,
        "use-java-context" => true,
        "use-try-lock" => undefined,
        "wrap-xa-resource" => true,
        "xa-resource-timeout" => undefined,
        "config-properties" => {
            "hostName" => {"value" => "mqserverhostname"},
            "port" => {"value" => "1520"},
            "channel" => {"value" => "channelname"},
            "transportType" => {"value" => "CLIENT"},
            "queueManager" => {"value" => "qmname"}
        }
    }
}
/profile=myapp/subsystem=resource-adapters/resource-adapter=wmq.jmsra.rar/admin-objects=workflowInputQueue:read-resource(include-defaults=true,recursive=true)
{
    "outcome" => "success",
    "result" => {
        "class-name" => "com.ibm.mq.connector.outbound.MQQueueProxy",
        "enabled" => true,
        "jndi-name" => "java:/jms/workflowInputQueue",
        "use-java-context" => true,
        "config-properties" => {"baseQueueName" => {"value" => "QUEUE.IN"}}
    }
}
还值得注意的是,还有另一篇关于堆栈溢出的文章,题为“SpringJMS和WebSphereMQ”,它至少部分地涵盖了这个主题,但完全没有涵盖jboss方面。 我希望能够在jboss级别推送大部分配置,如果可能的话,只需在Spring中查找即可


提前感谢社区能够提供的所有输入

刚刚做了一个测试,建议的配置似乎有效(目前只检查了日志,没有做一些负载测试)不过,我不认为它是理想的,因为管理所有的参数都需要在作为Spring的模块加载的属性文件中的许多条目来执行替换,或者JBASS的系统属性也要这样做。我同意