JMS-从远程Glassfish接收消息

时间:2016-02-26 15:25:16

标签: java glassfish jms mq

我正在开发一个使用JMS作为消息传递层的应用程序。我还使用glassfish来托管jms / mq后端。该应用程序能够使用我最初设置的glassfish 3.1服务器中的连接工厂和主题进行发布/订阅消息传递。我现在有另一个glassfish(4.1)实例,它承载一组新的应用程序使用的新功能,但我仍然需要使用第一个glassfish服务器广播的消息。客户端使用特定于glassfish 4.1的新库这一事实,我无法直接连接到glassfish1服务器。

我已经按照本教程关于多服务器环境(https://docs.oracle.com/cd/E19798-01/821-1841/bncfp/index.html)和独立的Java客户端都使用在新glassfish服务器中设置的连接工厂连接到旧的glassfish服务器。我知道正在建立连接,因为如果我停止glassfish1,我会收到连接丢失错误等等。

相关客户代码如下:

        System.setProperty("org.omg.CORBA.ORBInitialHost", "10.20.10.52");
        System.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
        try {
            try {
                ctx = new InitialContext();
        } catch (NamingException ex) {
            ex.printStackTrace();
        }
        ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/ConnectionFactory");
        Connection connection = cf.createConnection();
        jmsContext = cf.createContext(Session.AUTO_ACKNOWLEDGE);
        topic = (Topic) ctx.lookup("jms/Topic");
        updateShipperConsumer = jmsContext.createConsumer(topic);
        jmsProducer = jmsContext.createProducer();

        logger.info("Started JMS successfully!");
    } catch (NamingException ex) {
        ex.printStackTrace();
    } catch (JMSException ex) {
        Logger.getLogger(LamtecJMSSystemImpl.class.getName()).log(Level.SEVERE, null, ex);
    }
 }

jms / ConnectionFactory jndi是glassfish2上的本地连接工厂,其AddressList属性设置为glassfish1:7676。如教程所示,glassfish1上有一个相应的连接工厂,名称相同。查看glassfish1服务器上的imq日志文件,我看到了glassfish2的连接 我不确定我应该对jndi主题进行查询(我在本地以及远程服务器上进行查询),但我认为这不会有所作为。

根据我上面引用的教程,我已经完成了所有需要的配置和代码,但我仍然没有在我的客户端获得任何jms消息。 有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我可以建议JMS队列,可能主题是类似或相同的解决方案。您可以在两台服务器上创建具有相同名称的队列,并让第一个队列使用glassfish配置将其消息推送到第二个队列,因此让imq代理完成工作。使用属性" AddressList"在第一台服务器上配置jms连接工厂。有价值" mq:// host2:port2"使用第二个经纪人的设置。

请参阅glassfish资源模板,了解OSCM服务目录中的此类配置 https://github.com/servicecatalog/development/blob/master/oscm-installation/domains/bes_domain/installer/resources-template.xml

示例是连接工厂" jms / bss / masterIndexerQueueFactory"你可以在这个模板中找到它。

有关开源项目的更多信息OSCM Cloud Service Management Software