JBoss WildFly 7 连接到 ActiveMQ 5.9(2)

要对模块进行配置我们需要编辑JBoss的配置文件,这里我从standalone-full.xml开始,因为它已经对HornetQ进行了配置(这节省了我们很多时间)。我们需要添加activeMQ资源适配器,把下面这一行

<subsystem
  xmlns="urn:jboss:domain:resource-adapters:1.0"/>

改成

<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
    <resource-adapters>
        <resource-adapter>
            <module slot="main"/>
            <transaction-support>NoTransaction</transaction-support>
            <config-property>
                tcp://localhost:61616
            </config-property>
            <connection-definitions>
                <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name=" java:/AMQConnectionFactory " enabled="true" use-java-context="true" pool-name="AMQConnectionFactory"/>
            </connection-definitions>
            <admin-objects>
                <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name=" queue/JMSBridgeTargetQ " use-java-context="true" pool-name="target_queue">
                    <config-property>
                        JMSBridgeTargetQ
                    </config-property>
                </admin-object>
            </admin-objects>
        </resource-adapter>
    </resource-adapters>
</subsystem>

这样就创建了一个资源适配器,它使用了我们刚才创建的org.apache.activemq 模块,并连接到了运行在 tcp://localhost:61616上的远程ActiveMQ服务器上。它注册了一个连接工厂,名叫java:AMQConnectionFactory 使得我们可以连到远程服务器上,也创建了一个名为queue/JMSBridgeTargetQ的本地JNDI,该JNDI将被绑定到名为JMSBridgeTargetQ的ActiveMQ队列上。

下一步就是配置桥接器和本地队列。我们来编辑hornetq子系统,在hornetQ 服务器的定义后面,添加一个JMS桥接器。

<jms-bridge>
    <source>
        <connection-factory/>
        <destination/>
    </source>
    <target>
        <connection-factory/>
        <destination/>
    </target>
    <quality-of-service>AT_MOST_ONCE</quality-of-service>
    <failure-retry-interval>1000</failure-retry-interval>
    <max-retries>-1</max-retries>
    <max-batch-size>10</max-batch-size>
    <max-batch-time>100</max-batch-time>
</jms-bridge> .

这样就创建了一个桥接器,它使用名为ConnectionFactory 的连接工厂来消耗本地队列里的消息,该队列对应的JNDI名字是queue/JMSBridgeSourceQ。随后它将使用一个名为AMQConnectionFactory 的连接工厂(它由我们的资源适配器创建)来把消息发送到JNDI名称为queue/JMSBridgeTargetQ的本地队列中。我们的资源适配器会把这映射到远程ActiveMQ队列中。我们也需要在该配置文件的jms-destinations部分里,创建一个名为JMSBridgeSourceQ 的本地队列。

<jms-destinations>
    <jms-queue>
        <entry/>
        <entry/>
        <durable>true</durable>
    </jms-queue>
</jms-destinations>

这个队列有两个JNDI名称,使得它可以同时从内部(被桥接器)和外部(被客户端)访问到.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c32257ae2cfa7429fd500ac356a58095.html