配置嵌入在WAS集群中的ActiveMQ

时间:2011-02-08 10:48:39

标签: websphere activemq

也许这不是通常的做事方式,但我们正在尝试在具有2个节点的WAS 6.1群集中部署应用程序(EAR)。

每个节点都有自己的代理,我们希望通过发现将它们作为网络连接。

客户端也将通过发现连接其中一个,我们只有一个队列和一个主题,实际上只是需要在代理网络中的主题,因为生产者在节点内,消费者将是可以连接到任一节点的客户端之一。

这导致我们遇到了几个问题,因为我们只需部署一个带有一个activemq.xml配置文件的EAR。

<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
  xmlns="http://activemq.apache.org/schema/core"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
  http://activemq.apache.org/schema/core 
  http://activemq.apache.org/schema/core/activemq-core-5.4.1.xsd
  http://camel.apache.org/schema/spring
  http://camel.apache.org/schema/spring/camel-spring-2.5.0.xsd">
    <!-- Allows us to use system properties as variables in this configuration file
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
         <property name="locations">
            <value>file:///./conf/credentials.properties</value>
         </property>
    </bean>
-->
<!-- <broker xmlns="http://activemq.apache.org/schema/core" brokerName="{hostname}" dataDirectory="./activemq-data"> -->
    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="${COMPUTERNAME}" dataDirectory="./activemq-data">
        <!-- Destination specific policies using destination names or wildcards -->
        <destinationPolicy>
            <policyMap>
                <policyEntries>
                    <policyEntry queue=">" memoryLimit="5mb"/>
                    <policyEntry topic=">" memoryLimit="5mb">
                      <!-- you can add other policies too such as these
                        <dispatchPolicy>
                            <strictOrderDispatchPolicy/>
                        </dispatchPolicy>
                        <subscriptionRecoveryPolicy>
                            <lastImageSubscriptionRecoveryPolicy/>
                        </subscriptionRecoveryPolicy>
                      -->
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy>


        <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
        <!--
        <managementContext>
            <managementContext createConnector="true"/>
        </managementContext>
        -->

        <networkConnectors>
            <networkConnector uri="multicast://default?group=${groupId}"/>
        </networkConnectors>        

        <persistenceAdapter>
            <amqPersistenceAdapter syncOnWrite="false" directory="./activemq-data" maxFileLength="20 mb"/>
        </persistenceAdapter>

        ${sslContext}

        <!--  The maximum about of space the broker will use before slowing down producers -->
        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="20 mb"/>
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="1 gb" name="foo"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="100 mb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>

        <!-- The transport connectors ActiveMQ will listen to -->
        <transportConnectors>
            <transportConnector name="openwire" uri="${brokerURL}" discoveryUri="multicast://default?group=${groupId}" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true" />
        </transportConnectors>


    </broker>

</beans:beans>

这是使用的maven过滤器:

brokerURL=tcp://0.0.0.0:61616
sslContext=
groupId=0

这是我们使用的最后一个版本,如果客户端使用直接ips进行故障转移,它可以连接到它们两个,使用发现只有一个节点(Windows XP)找到另一个(Windows Server 2008)没有回复IGMP数据包(禁用所有防火墙)并且它们不相互连接。

其中一个已知问题是brokerName,因为我已阅读here它可以包含变量,但这似乎不能在maven部署之外工作,但不确定它是否是我们唯一的错误或者还有更多。

如果需要,我会添加额外的信息,告诉我。

0 个答案:

没有答案