ActiveMQ代理通过SSL连接到Tibco EMS

时间:2016-03-31 12:45:22

标签: jms activemq

我尝试使用SSL连接在ActiveMQ和Tibco EMS之间设置代理。

  1. 我在activemq / lib下复制了jms-2.0.jar,tibcrypt.jar,tibjms.jar和slf4j-api-1.7.13.jar
  2. 我有以下activemq.xml config
  3. 问题:经纪人开始没事。但是它无法从EMS捕获新消息。它都没有引起任何错误。

    <beans xmlns="http://www.springframework.org/schema/beans"
      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.xsd
      http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.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:${activemq.conf}/credentials.properties</value>
            </property>
        </bean>
       <!-- Allows accessing the server log -->
        <bean id="logQuery" class="io.fabric8.insight.log.log4j.Log4jLogQuery"
              lazy-init="false" scope="singleton"
              init-method="start" destroy-method="stop">
        </bean>
     <!-- JMS ConnectionFactory to use for local bridging -->
        <bean id="tibco" class="com.tibco.tibjms.TibjmsQueueConnectionFactory">
            <property name="serverUrl" value="ssl://10.88.66.225:7243" />
      <property name="userName" value="admin" />
      <property name="userPassword" value="admin123" />
      <property name="SSLIdentity" value="/home/activemq/activemq/conf/client_identity.p12" />
      <property name="SSLAuthOnly" value="true" />
        </bean>
        <!--
            The <broker> element is used to configure the ActiveMQ broker.
        -->
        <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
            <destinationPolicy>
                <policyMap>
                  <policyEntries>
                    <policyEntry topic=">" >
                        <!-- The constantPendingMessageLimitStrategy is used to prevent
                             slow topic consumers to block producers and affect other consumers
                             by limiting the number of messages that are retained
                             For more information, see:
                             http://activemq.apache.org/slow-consumer-handling.html
                        -->
                      <pendingMessageLimitStrategy>
                        <constantPendingMessageLimitStrategy limit="1000"/>
                      </pendingMessageLimitStrategy>
                    </policyEntry>
                  </policyEntries>
                </policyMap>
            </destinationPolicy>
            <!--
                The managementContext is used to configure how ActiveMQ is exposed in
                JMX. By default, ActiveMQ uses the MBean server that is started by
                the JVM. For more information, see:
                http://activemq.apache.org/jmx.html
            -->
            <managementContext>
                <managementContext createConnector="false"/>
            </managementContext>
            <!--
                Configure message persistence for the broker. The default persistence
                mechanism is the KahaDB store (identified by the kahaDB tag).
                For more information, see:
                http://activemq.apache.org/persistence.html
            -->
            <persistenceAdapter>
                <kahaDB directory="${activemq.data}/kahadb"/>
            </persistenceAdapter>
              <!--
                The systemUsage controls the maximum amount of space the broker will
                use before disabling caching and/or slowing down producers. For more information, see:
                http://activemq.apache.org/producer-flow-control.html
              -->
              <systemUsage>
                <systemUsage>
                    <memoryUsage>
                        <memoryUsage percentOfJvmHeap="70" />
                    </memoryUsage>
                    <storeUsage>
                        <storeUsage limit="100 gb"/>
                    </storeUsage>
                    <tempUsage>
                        <tempUsage limit="50 gb"/>
                    </tempUsage>
                </systemUsage>
            </systemUsage>
            <!--
                The transport connectors expose ActiveMQ over a given protocol to
                clients and other brokers. For more information, see:
                http://activemq.apache.org/configuring-transports.html
            -->
            <transportConnectors>
                <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
                <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
                <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            </transportConnectors>
            <!-- destroy the spring context on shutdown to stop jetty -->
            <shutdownHooks>
                <bean xmlns="http://www.springframework.org/schema/beans"
    
         

    class =“org.apache.activemq.hooks.SpringContextHook”/&gt;                                   

            <!-- Dependencies: tibjms.jar must be in the activemq lib directory -->
            <!-- bridging definitions for traffic to/from remote activemq instance -->
            <jmsBridgeConnectors>
                <jmsQueueConnector outboundQueueConnectionFactory="#tibco">
                    <inboundQueueBridges>
                        <inboundQueueBridge
                                inboundQueueName = "queue.Sample"
                                localQueueName   = "queue.incomingMsgs.Sample"/>
                    </inboundQueueBridges>
                    <outboundQueueBridges>
                        <outboundQueueBridge
                                outboundQueueName = "queue.activemqtoems"
                                localQueueName    = "queue.incomingMsgs.Sample"/>
                     </outboundQueueBridges>
                </jmsQueueConnector>
            </jmsBridgeConnectors>
        </broker>
    
        <!--
            Enable web consoles, REST and Ajax APIs and demos
            The web consoles requires by default login, you can disable this in the jetty.xml file
            Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details
        -->
        <import resource="jetty.xml"/>
    </beans>
    <!-- END SNIPPET: example -->
    

1 个答案:

答案 0 :(得分:0)

我强烈建议使用网桥,而不是使用ActiveMQ连接代理到代理JMS。代理到代理的方法因错误处理方案而变得复杂,可以更好地定制桥接以处理您的用例。