首页 > 解决方案 > 无法在 JMS 桥 JBoss 7.3 中查找源连接工厂

问题描述

我正在尝试使用 JMS 桥将消息从 JBoss 7.3 服务器推送到远程 Apache ActiveMQ 5.16.1 服务器。在尝试创建 JMS 桥时,尽管已经设置了连接工厂,但我得到了一个源连接工厂丢失异常。

服务器在域模式下运行,配置如下:

<subsystem xmlns="urn:jboss:domain:messaging-activemq:8.0">
    <server name="default">
        <statistics enabled="${wildfly.messaging-activemq.statistics-enabled:${wildfly.statistics-enabled:false}}"/>
        <queue name="JMSBridgeSourceQueue" address="queue/sourceQueue"/>
        <security-setting name="#">
            <role name="admin" send="true" consume="true" create-non-durable-queue="true" delete-non-durable-queue="true"/>
        </security-setting>
        <address-setting name="#" dead-letter-address="jms.queue.DLQ" expiry-address="jms.queue.ExpiryQueue" max-size-bytes="10485760" page-size-bytes="2097152" message-counter-history-day-limit="10"/>
        <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/>
        <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput">
            <param name="batch-delay" value="50"/>
        </http-connector>
        <http-connector name="bridge-connector" socket-binding="messaging-remote" endpoint="http-acceptor"/>
        <in-vm-connector name="in-vm" server-id="0">
            <param name="buffer-pooling" value="false"/>
        </in-vm-connector>
        <http-acceptor name="http-acceptor" http-listener="default"/>
        <http-acceptor name="http-acceptor-throughput" http-listener="default">
            <param name="batch-delay" value="50"/>
            <param name="direct-deliver" value="false"/>
        </http-acceptor>
        <in-vm-acceptor name="in-vm" server-id="0">
            <param name="buffer-pooling" value="false"/>
        </in-vm-acceptor>
        <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
        <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
        <jms-queue name="testQueue" entries="queue/test java:jboss/exported/jms/queue/test"/>
        <jms-queue name="NonBridgedTestQueue" entries="java:jboss/exported/jms/queue/nonBridgedTestQueue"/>
        <jms-queue name="BridgedTestQueue" entries="java:jboss/exported/jms/queue/bridgedTestQueue"/>
        <jms-queue name="c3mMasterQueue" entries="java:jboss/exported/jms/queue/c3mMasterQueue"/>
        <connection-factory name="InVmConnectionFactory" entries="java:/ConnectionFactory" connectors="in-vm"/>
        <connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector"/>
        <connection-factory name="InVmXAConnectionFactory" entries="java:/XAConnectionFactory" connectors="in-vm" factory-type="XA_GENERIC"/>
        <pooled-connection-factory name="activemq-ra" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory" connectors="in-vm" transaction="xa"/>
    </server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:resource-adapters:5.0">
    <resource-adapters>
        <resource-adapter id="activemq">
            <module slot="main" id="org.apache.activemq.activemq.ra" />
            <transaction-support>XATransaction</transaction-support>
            <config-property name="ServerUrl">tcp://localhost:61616?jms.rmIdFromConnectionId=true</config-property>
            <config-property name="UserName">admin</config-property>
            <config-property name="UseInboundSession">false</config-property>
            <config-property name="Password">admin</config-property>
            <connection-definitions>
                <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/AMQConnectionFactory" enabled="true" pool-name="AMQConnectionFactory">
                    <xa-pool>
                        <min-pool-size>1</min-pool-size>
                        <max-pool-size>20</max-pool-size>
                        <prefill>false</prefill>
                        <is-same-rm-override>false</is-same-rm-override>
                    </xa-pool>
                </connection-definition>
            </connection-definitions>
            <admin-objects>
            <admin-object class-name="org.apache.activemq.ActiveMQXAConnectionFactory" jndi-name="java:jboss/activemq/activeMQXAConnectionFactory" use-java-context="true" pool-name="activeMQXAConnectionFactory">
                <config-property name="brokerURL">tcp://localhost:61616?jms.rmIdFromConnectionId=true</config-property>
            </admin-object>
            <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:jboss/activemq/topic/TestTopic" use-java-context="true" pool-name="TestTopic">
                <config-property name="PhysicalName">activemq/topic/TestTopic</config-property>
            </admin-object>
            <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/activemq/queue/c3mMasterQueue" use-java-context="true" pool-name="c3mMasterQueue">
                <config-property name="PhysicalName">activemq/queue/c3mMasterQueue</config-property>
            </admin-object>
            <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/activemq/queue/bridgedTestQueue" use-java-context="true" pool-name="BridgedTestQueue">
                <config-property name="PhysicalName">activemq/queue/bridgedTestQueue</config-property>
            </admin-object>
            <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/activemq/queue/TestQueue" use-java-context="true" pool-name="TestQueue">
                <config-property name="PhysicalName">activemq/queue/TestQueue</config-property>
            </admin-object>
            </admin-objects>
        </resource-adapter>
    </resource-adapters>
</subsystem>

在尝试使用以下 CLI 命令创建 JMS 桥时:

/profile=full/subsystem=messaging-activemq/jms-bridge=my-jms-bridge:add(quality-of-service=AT_MOST_ONCE,module=org.apache.activemq.artemis,failure-retry-interval=500,max-retries=1,max-batch-size=10,max-batch-time=100,source-connection-factory=java:/XAConnectionFactory,source-destination=jboss/exported/jms/queue/c3mMasterQueue,source-context={},target-connection-factory=jboss/activemq/activeMQXAConnectionFactory,target-destination=jboss/activemq/queue/c3mMasterQueue,target-context={})

得到以下错误:

{"response" => {
    "outcome" => "failed",
    "failure-description" => {
        "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.XAConnectionFactory"],
        "WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.messaging-activemq.jms-bridge.my-jms-bridge is missing [jboss.naming.context.java.XAConnectionFactory]"]
    },
    "rolled-back" => true
}}

我正在关注以下链接以供参考:

你能帮我弄清楚我哪里出错了吗?

标签: jmswildflyactivemqjboss7.x

解决方案


推荐阅读