虚拟TIBCO队列进行测试

时间:2014-10-31 04:24:02

标签: jms tibco-ems

我编写了一段代码来连接到TIBCO队列并获取客户数据。但在将其投入生产之前,我找不到测试它的方法。我们可以以某种方式创建一个虚拟队列,以便在将其打包生产之前确保我的程序正常运行吗?

这是我的代码..

    package GI;

import javax.jms.JMSSecurityException;
import javax.naming.InitialContext;

import javax.jms.Queue;
import javax.jms.TextMessage;
import javax.jms.QueueSender;
import javax.jms.DeliveryMode;
import javax.jms.QueueSession;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;

public class Queue
{
    public Queue()
    {
        System.err.println("\n------------------------------------------------------------------------");
        System.err.println("tibjmsTEQueue SAMPLE");
        System.err.println("------------------------------------------------------------------------");
    }

    public String QueueProcess(String XMLRequest, String serverUrl, String userName, String password, String InQueueName)
    {
        String [] args = new String[4];

        args[0]=serverUrl;
        args[1]=userName;
        args[2]=password;
        args[3]=InQueueName;

        System.out.println("Server....................... "+serverUrl);
        System.out.println("User......................... "+userName);
        System.out.println("InQueue...................... "+InQueueName);
        System.out.println("------------------------------------------------------------------------\n");

        try
        {
            tibjmsUtilities.initSSLParams(serverUrl,args);
        }
        catch (JMSSecurityException e)
        {
            System.err.println("JMSSecurityException: "+e.getMessage()+", provider="+e.getErrorCode());
            e.printStackTrace();
            System.exit(0);
        }

        System.err.println("Starting");

        QueueConnection connectionIn = null;
        try
        {
            InitialContext context = new InitialContext();

            Queue tibcoQueue = (Queue) context.lookup("queue/queue0");

            QueueConnectionFactory factory = new com.tibco.tibjms.TibjmsQueueConnectionFactory(serverUrl);
            connectionIn = factory.createQueueConnection(userName, password);
            QueueSession sessionIn = connectionIn.createQueueSession(false,javax.jms.Session.AUTO_ACKNOWLEDGE);

            QueueSender queueSender = sessionIn.createSender(tibcoQueue);
            queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

            QueueReceiver queueReceiver = sessionIn.createReceiver(tibcoQueue);

            connectionIn.start();

            System.out.println("Connected to Queue...");
            System.out.println("XMLRequest: " + XMLRequest);

            TextMessage sendXMLRequest = sessionIn.createTextMessage(XMLRequest);

            queueSender.send(sendXMLRequest);

            System.out.println("sent: " + sendXMLRequest.getText());

            TextMessage XMLResponse = (TextMessage) queueReceiver.receive();

            System.out.println("received: " + XMLResponse.getText());
            return((String) XMLResponse.getText());
        }
        catch(Exception e)
        {
            System.err.println("Exitting with Error");
            e.printStackTrace();
            System.exit(0);
        }
        finally
        {
            System.err.println("Exitting");
            try                 {connectionIn.close();}
            catch(Exception e1) {}
        }

        return("Failure");
    }

    public static void main(String args[])
    {
        Queue t = new Queue();
    }
}

1 个答案:

答案 0 :(得分:0)

永远不会建议在同一个EMS消息传递实例上混合生产和非生产流量。这是一种非常冒险的做法,因为它引入了无意中将非生产流量发送到生产应用程序的可能性。我建议先咨询您的EMS运营团队,因为他们可能会指出您可以使用的开发EMS实例。

对于您不希望对环境进行压力测试的单元和/或集成测试,许多开发人员在其本地开发工作站上安装了EMS实例。您的EMS运营团队可能再次为您提供许可证和安装二进制文件,以便在本地安装。