2010-08-31 60 views
3

我有一台运行Jboss 4.2.2和Jboss 5.1.0的服务器。问题是第三方不能在不久的将来将其应用程序升级到Jboss 5.1.0,对我们来说这是一件简单的事情。不幸的是,我们需要从运行在Jboss 4.2.2上的第三方应用程序发送和接收一些JMS消息。如何从JBOSS 4和5连接JMS队列?

在JbossMQ和JbossMessaging之间启用JMS消息传输的最简单方法是什么?

+0

你能修改在JBoss 4.x中运行的应用程序,或不转移有没有涉及到的应用程序的知识,会发生什么? – skaffman 2010-08-31 18:57:08

+0

这取决于,它是一个不同的承包商,所以它主要是时间/金钱的问题。你有什么考虑? – Mauli 2010-09-01 07:45:17

回答

4

我想我找到了解决我的问题的方案。 JBoss的文档中有一章迁移的JBoss Messaging和JBoss MQ之间的消息:http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/5.0.0.BETA/html/JBoss_Messaging_User_Guide/inst-mqmessagemigration.html

我有2个主题myTopicSend和myTopicReceive我JBOSS 4.2和我有2个主题myTopicSend5和myTopicReceive5在JBoss 5.1。

我想将来自myTopicSend的所有消息桥接到myTopicReceive5并从myTopicSend5到MyTopicReceive。

莫名其妙的配置并没有在所有的工作第一,但试验一段时间后,我现在有以下配置:

<mbean code="org.jboss.jms.jndi.JMSProviderLoader" 
     name="jboss.messaging:service=JMSProviderLoader,name=RemoteJBossMQProvider"> 
    <attribute name="ProviderName">RemoteXAConnectionFactory</attribute> 
    <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute> 
    <attribute name="FactoryRef">XAConnectionFactory</attribute> 
    <attribute name="QueueFactoryRef">XAConnectionFactory</attribute> 
    <attribute name="TopicFactoryRef">XAConnectionFactory</attribute> 
    <attribute name="Properties"> 
     java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory 
     java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces 
     java.naming.provider.url=127.0.0.1:1099 
    </attribute> 
</mbean> 

<mbean code="org.jboss.jms.server.bridge.BridgeService" 
     name="jboss.messaging:service=Bridge,name=LegayBridgeSend" xmbean-dd="xmdesc/Bridge-xmbean.xml"> 
    <depends optional-attribute-name="SourceProviderLoader">jboss.messaging:service=JMSProviderLoader,name=RemoteJBossMQProvider</depends> 
    <depends optional-attribute-name="TargetProviderLoader">jboss.messaging:service=JMSProviderLoader,name=JMSProvider</depends> 
    <attribute name="SourceDestinationLookup">/topic/myTopicSend</attribute> 
    <attribute name="TargetDestinationLookup">/topic/myTopicReceive5</attribute> 
    <attribute name="QualityOfServiceMode">0</attribute> 
    <attribute name="MaxBatchSize">1</attribute> 
    <attribute name="MaxBatchTime">-1</attribute> 
    <attribute name="FailureRetryInterval">5000</attribute> 
    <attribute name="MaxRetries">-1</attribute> 
    <attribute name="AddMessageIDInHeader">false</attribute> 
</mbean> 

<mbean code="org.jboss.jms.server.bridge.BridgeService" 
     name="jboss.messaging:service=Bridge,name=LegayBridgeReceive" xmbean-dd="xmdesc/Bridge-xmbean.xml"> 
    <depends optional-attribute-name="SourceProviderLoader">jboss.messaging:service=JMSProviderLoader,name=JMSProvider</depends> 
    <depends optional-attribute-name="TargetProviderLoader">jboss.messaging:service=JMSProviderLoader,name=RemoteJBossMQProvider</depends> 
    <attribute name="SourceDestinationLookup">/topic/myTopicSend5</attribute> 
    <attribute name="TargetDestinationLookup">/topic/myTopicReceive</attribute> 
    <attribute name="QualityOfServiceMode">0</attribute> 
    <attribute name="MaxBatchSize">1</attribute> 
    <attribute name="MaxBatchTime">-1</attribute> 
    <attribute name="FailureRetryInterval">5000</attribute> 
    <attribute name="MaxRetries">-1</attribute> 
    <attribute name="AddMessageIDInHeader">false</attribute> 
</mbean> 

我意识到一个重要的事情是,来调整MaxBatchSizeMaxBatchTime参数,因为我想立即将消息传递到目标队列。

这些参数的描述可以在http://www.redhat.com/docs/en-US/JBoss_Enterprise_Application_Platform/5.0.0/html/JBoss_Messaging_1.4.6/index.html找到