有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

OSX上的java简单JMS客户端

我已经好几年没有接触过任何J2EE内容了,我需要快速开发一个JMS客户机进行演示。 我在OSX上使用Eclipse,我甚至无法开始,因为我似乎不知道如何获得所需的库

这应该是一个简单的独立应用程序(不在容器中运行),用于从主题中提取消息


共 (1) 个答案

  1. # 1 楼答案

    每个JMS实现都有自己的一组库,用于指定如何获得初始连接工厂。如果您有一个可以从中提取消息的现有服务器,则需要检查该服务器的文档,以确定在哪里找到要放入类路径的库,以及如何创建初始连接工厂。如果您想为演示创建服务器,我建议使用嵌入式Active MQ代理

    一旦有了连接工厂,就可以直接轮询来自某个主题的消息。下面是一些示例代码,可以调用这些代码来删除当前消息的主题

      // Implementation specific code
     public void drainTopic(TopicConnectionFactory factory, String topicName, String subscriberId)
        // set factory properties like the server ID
        Connection conn = factory.createConnection();
        conn.start();
        Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Topic topic = session.createTopic(topicName);
        MessageConsumer consumer = session.createDurableSubscriber(topic, subscriberId);
        Message message;
        while (null != (message = consumer.receive(1000))) {
            // do work on the message 
        }
        conn.close();
    }
    

    请注意持久订户的使用。这意味着,我不必一直试图维护一个连接,并在它以某种方式超时时处理错误。但由于订阅是持久的,服务器知道在我未连接时保留主题收到的任何消息,并在下次连接时提供它们。无论主机操作系统如何,此代码都是相同的。唯一棘手的部分是创建特定于提供商的连接工厂