Apache camel ActiveMQ嵌入式桥到驼峰JMS桥

Apache camel ActiveMQ嵌入式桥到驼峰JMS桥,apache-camel,jms,activemq,jndi,camel-jms,Apache Camel,Jms,Activemq,Jndi,Camel Jms,我有一个使用ActiveMQ 5.8.0处理JMS消息的旧应用程序,还有一些连接到此ActiveMQ的JNDI远程主题 我有一个这样的连接器: <bean class="org.apache.activemq.network.jms.JmsConnector"> <property name="outboundTopicConnectionFactory" ref="jmsConnectionFactoryTo"

我有一个使用ActiveMQ 5.8.0处理JMS消息的旧应用程序,还有一些连接到此ActiveMQ的JNDI远程主题

我有一个这样的连接器:

<bean class="org.apache.activemq.network.jms.JmsConnector">
    <property name="outboundTopicConnectionFactory" ref="jmsConnectionFactoryTo" />
    <property name="outboundClientId" value="${remote.clientId}" />
    <property name="jndiOutboundTemplate" ref="jndiTemplateTo" />
    <property name="preferJndiDestinationLookup" value="true" />
    <property name="inboundTopicBridges">
        <list>
            <bean class="org.apache.activemq.network.jms.InboundTopicBridge">
                <property name="inboundTopicName" value="${remote.topic.to}"/> 
                <property name="localTopicName" value="${local.topic.to}"/>
                <property name="consumerName" value="${remote.consumer.name}"/>
                <property name="selector" value="${remote.selector}"/>
            </bean>
        </list>
    </property>
</bean>
在“org.apache.activemq.network.jms.JmsConnector”类中,它在任何地方都使用“TopicConnectionFactory”,这在jms 1.1中不再推荐使用。

编辑: 根据@justinbertram的说法,我需要使用Camel而不是ActiveMQ嵌入式桥。但是我找不到任何XML配置的示例,可以用来替换我实际的双bean JMSConnector。保存XML配置文件的简单方法是什么?

如(即
org.apache.activemq.network.jms.JmsConnector
)所述:

ActiveMQ为实现JMS 1.0.2及以上规范的其他JMS提供程序提供桥接功能

换句话说,JMS到JMS桥的整个目标是使用JMS 1.0.2接口。将其更改为仅使用JMS 1.1将无法达到此目的

文档还指出,您应该使用Camel,而不是JMS-to-JMS桥:

警告,先试试骆驼

请注意,我们建议您考虑使用Apache Camel将ActiveMQ桥接到任何消息代理(或任何其他技术、协议或中间件),因为这样做更容易:

  • 保持灵活性;很容易将不同的队列/主题映射到另一个提供程序上的一个或多个队列或主题
  • 执行基于内容的路由、筛选和其他企业集成模式
  • 允许您使用任何技术、协议或中间件,而不仅仅是JMS提供商

因此,我建议您使用Camel而不是
org.apache.activemq.network.jms.JmsConnector
我认为让您的代码返回
TopicConnectionFactory
将是最简单的解决方案。甚至JMS 2.0规范也提供了
TopicConnectionFactory
。无论您使用的是哪个版本的ActiveMQ,您都可以选择在代码中使用
TopicConnectionFactory
,并将其提供给网桥

请注意,骆驼路线:

   <camelContext xmlns="http://camel.apache.org/schema/spring">
      <route>
         <from uri="mqseries:Foo.Bar"/>
         <to uri="activemq:Cheese"/>
      </route>
   </camelContext>


没有错误处理。例如,如果“to”端点已关闭,则此路由将从“from”端点读取消息,并将消息扔到地板上。此外,如果“to”组件未配置为使用缓存/池连接工厂,则将为每个发送的消息创建新的JMS连接。这会导致性能低下,并可能导致许多套接字处于TIME_WAIT状态。底线-小心琐碎的骆驼路线。

谢谢你的回答,是的,我在文档中也看到了这一点。事实上,我是JMS的初学者,我希望fin是一个比使用camel更简单的解决方案。你有什么线索让我先看看我的实际配置吗?我不知道从哪里开始。。。谢谢引用的文档有一个简单的骆驼例子。还有一个。不管怎样,通常认为获得问题的答案,然后改变问题,使之前的答案基本上无效是不好的。通常,您只需将答案标记为正确(假设正确),然后创建一个新问题。评论中简短的后续问题当然可以,但你现在真的提出了一个完全不同的问题。我建议您创建一个新的示例,如果您正在寻找完整的JMS桥示例,请查看这些示例。
   <camelContext xmlns="http://camel.apache.org/schema/spring">
      <route>
         <from uri="mqseries:Foo.Bar"/>
         <to uri="activemq:Cheese"/>
      </route>
   </camelContext>