【问题标题】:JMS Client RoutingJMS 客户端路由
【发布时间】:2017-07-24 20:31:40
【问题描述】:

大家好,我正在开发一个 JMS 客户端。我了解我的 JMS 资源,即 ConnectionFactory、QueueConnectionFactory 和 Queue/Topic。我已经使用 java 开发了它,它在我使用 glassfish 的本地服务器机器上运行良好。

我想确定我从这个路由点收到的 Connectionfactory 或 QueueConnectionFactory 是什么。我将如何实现连接到 VPN 服务器。 CSD 端口为 7016,CSD IP:10.10.10.76

<routingPoint>
            <name>CSD</name>
            <inboundQueue>interfaceCsdOut</inboundQueue>
            <outboundQueue>interfaceCsdIn</outboundQueue>
               <context>glassfish-csd</context>
            <matchingKey>DESTINATION</matchingKey>
            <controlPoint>SWITCH</controlPoint>
        </routingPoint>

这是我用来连接本地机器的 java 代码的 sn-p。

    Properties props = new Properties();
                      props.put(Context.PROVIDER_URL, "mq://127.0.0.1:7676");

                               // Create the initial context for remote JMS server
               InitialContext cntxt = new InitialContext(props);
                      //System.out.println("Context Created");  
  // JNDI Lookup for QueueConnectionFactory in remote JMS Provider
                      QueueConnectionFactory qFactory = (QueueConnectionFactory)cntxt.lookup("TestQueueConnectionFactory");

  // Create a Connection from QueueConnectionFactory
                       Connection connection = qFactory.createConnection();
                          //System.out.println("Connection established with JMS Provider ");

  // Initialise the communication session 
                  Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

  // Create the message
                     TextMessage message = session.createTextMessage();
                       message.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
                        message.setText(finalm);

                          // JNDI Lookup for the Queue in remote JMS Provider
                                 Queue queue = (Queue)cntxt.lookup("jms/Escrow");

                               // Create the MessageProducer for this communication 
                               // Session on the Queue we have
                             MessageProducer mp = session.createProducer(queue);

                                // Send the message to Queue
                                 mp.send(message);
                                 //System.out.println(finalm);

                                 // Make sure all the resources are released 
                                       mp.close();
                                 session.close();
                                cntxt.close();

【问题讨论】:

    标签: java jms


    【解决方案1】:

    听起来您想从外部客户端连接到这些队列。

    在这种情况下,该客户端需要有一些客户端 jar,例如 JMS 客户端。您的提供商 URL 是:

    iiop://10.10.10.76:7016

    (检查端口以确保它是引导端口)

    Connectionfactory 或 QueueConnectionFactory 是

    TestQueueConnectionFactory

    还有你的队列:

    jms/托管

    如果您使用 websphere 并导入了 jms 客户端 jar,您的客户端代码可能如下所示:(对于 Glassfish 应该类似)

    import java.io.File; 
    import java.io.StringWriter; 
    import java.util.Hashtable; 
    
    import javax.jms.Connection; 
    import javax.jms.ConnectionFactory; 
    import javax.jms.JMSException; 
    import javax.jms.MessageProducer; 
    import javax.jms.Queue; 
    import javax.jms.Session; 
    import javax.jms.TextMessage; 
    import javax.naming.Context; 
    import javax.naming.InitialContext; 
    import javax.naming.NamingException; 
    import javax.xml.parsers.DocumentBuilder; 
    import javax.xml.parsers.DocumentBuilderFactory; 
    import javax.xml.parsers.ParserConfigurationException; 
    import javax.xml.transform.OutputKeys; 
    import javax.xml.transform.Transformer; 
    import javax.xml.transform.TransformerException; 
    import javax.xml.transform.TransformerFactory; 
    import javax.xml.transform.dom.DOMSource; 
    import javax.xml.transform.stream.StreamResult; 
    
    import org.json.JSONException; 
    import org.json.JSONObject; 
    import org.w3c.dom.Attr; 
    import org.w3c.dom.Document; 
    import org.w3c.dom.Element; 
    
    public class SimpleClientLast { 
    
    
            public static void main(String args[]) throws JMSException, NamingException { 
    
                    Hashtable env = new Hashtable(); 
                    env.put(Context.INITIAL_CONTEXT_FACTORY, 
                                    "com.ibm.websphere.naming.WsnInitialContextFactory"); 
                    env.put(Context.PROVIDER_URL, "iiop://10.10.10.76:7016"); 
    
                    Context jndiContext = null; 
                    try { 
                            jndiContext = new InitialContext(env); 
                    } catch (NamingException e) { 
    
                            System.out.println("Could not create JNDI API context: " 
                                            + e.toString()); 
                            System.exit(1); 
                    } 
    
                    ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext 
                                    .lookup("TestQueueConnectionFactory"); 
                    Connection qConn = connectionFactory.createConnection(); 
                    Session qSession = qConn.createSession(false, Session.AUTO_ACKNOWLEDGE); 
                    Queue q = (Queue) jndiContext.lookup("jms/Escrow"); 
    
                    System.out.println("before"); 
                    MessageProducer producer = qSession.createProducer(q); 
                    TextMessage message = qSession.createTextMessage(); 
    
                    System.out.println("JSON begin: "); 
                    String jsonText = "{"mytext":"myTextDetails"}" 
    
                    System.out.println(jsonText); 
                    message.setText(jsonText); 
                    producer.send(message); 
    
                    System.out.println("JSON end."); 
    
                    System.out.println("after"); 
    
                    producer.close(); 
                    qSession.close(); 
                    qConn.close(); 
    
            } 
    

    【讨论】:

    • 我们假设使用 CSDinterfaceCsdOutinterfaceCsdInglassfish-csdDESTINATIONSWITCH 我的队列是interfaceCsdIn
    猜你喜欢
    • 2014-09-05
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2015-12-06
    相关资源
    最近更新 更多