【问题标题】:JBoss JMS Remote Queue?JBoss JMS 远程队列?
【发布时间】:2010-12-26 10:14:02
【问题描述】:

我想向远程队列发送消息?我应该怎么做 我找不到任何关于此的文档? 任何人都可以帮忙?? ?

【问题讨论】:

    标签: jboss jms message-queue


    【解决方案1】:

    在您的 ${JBOSS_CONF}/deploy/messaging/jms-ds.xml 中添加另一个“JMSProvider”。在此示例中,我使用提供程序名称“RemoteJMSProvider”:

    <!-- Remote JMS Server-->
    <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
      name="jboss.mq:service=JMSProviderLoader,name=RemoteJMSProvider,server=your_remote_host">
        <attribute name="ProviderName">RemoteJMSProvider</attribute>
        <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
        <!-- The connection factory -->
        <attribute name="FactoryRef">XAConnectionFactory</attribute>
        <!-- The queue connection factory -->
        <attribute name="QueueFactoryRef">XAConnectionFactory</attribute>
        <!-- The topic factory -->
        <attribute name="TopicFactoryRef">XAConnectionFactory</attribute>
        <!-- Connect to JNDI on the host "the-remote-host-name" port 1099-->
        <attribute name="Properties">
           java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
           java.naming.factory.url.pkgs=org.jnp.interfaces
           java.naming.provider.url=your_remote_host:1099
        </attribute>
    

    接下来,添加一个“远程连接工厂”:

    <tx-connection-factory>
      <jndi-name>RemoteJMSConnectionFactory</jndi-name>
      <xa-transaction/>
      <rar-name>jms-ra.rar</rar-name>
      <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
      <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Queue</config-property>
      <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/RemoteJMSProvider</config-property>
      <max-pool-size>20</max-pool-size>
      <security-domain-and-application>JmsXARealm</security-domain-and-application>
      <depends>jboss.messaging:service=ServerPeer</depends>
    

    现在,每当您创建对“RemoteJMSFactory”的连接工厂引用时,您引用的任何队列都将在远程服务器上查找:

    ConnectionFactory factory =(ConnectionFactory)JNDIContext.lookup("java:/RemoteJMSConnectionFactory");
    queue = (Destination) JNDIContext.lookup("queue/myqueue");
    connection = factory.createConnection();
    session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    MessageProducer sender = session.createProducer(queue);
    sender.send(jmsMessage);
    

    另请参阅: http://community.jboss.org/wiki/HowDoIConfigureAnMDBToTalkToARemoteQueue

    【讨论】:

    • 这是否适用于远程主题。我在 JBOSS 上使用 EJB3 MDB 来收听 IBM MQ 上的远程主题。
    【解决方案2】:

    查看您的 jboss 安装的文档/示例。连接到远程队列所需的唯一更改是设置初始上下文以引用远程应用服务器的 JNDI 端口。

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 2014-09-13
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2014-12-23
      • 2013-06-21
      相关资源
      最近更新 更多