【问题标题】:How to connect JMS queues from JBOSS 4 and 5?如何从 JBOSS 4 和 5 连接 JMS 队列?
【发布时间】:2011-04-06 08:05:27
【问题描述】:

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

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

【问题讨论】:

  • 您能否对在 JBoss 4.x 上运行的应用程序进行更改,或者是否必须在不了解相关应用程序的情况下进行转移?
  • 视情况而定,是不同的承包商,所以主要是时间/金钱的问题。你有什么想法?

标签: jboss jms messaging jboss5.x jbossmq


【解决方案1】:

我想我找到了解决问题的方法。 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

我的 JBOSS 4.2 上有 2 个主题 myTopicSend 和 myTopicReceive,而 JBOSS 5.1 上有 2 个主题 myTopicSend5 和 myTopicReceive5。

我想桥接从 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找到

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2010-12-26
    • 2011-06-04
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多