【问题标题】:Simple JMS Clients on OS XOS X 上的简单 JMS 客户端
【发布时间】:2009-08-28 17:00:57
【问题描述】:

我已经很多年没有接触过任何 J2EE 的东西了,我需要快速创建一个 JMS 客户端来进行演示。 我在 OS X 上使用 Eclipse,我什至无法开始,因为我似乎不知道如何获取所需的库。

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

【问题讨论】:

  • 重新标记,因为 Eclipse 与问题无关

标签: java jakarta-ee jms


【解决方案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();
}

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

【讨论】:

  • 不幸的是,我得到了连接信息,需要从那里提取(用户、密码和 URL)。我想我必须回到设置主题的小组并询问他们。谢谢。
  • 是的。您肯定需要询问要使用什么 JMS 实现。 ActiveMQ、OpenMQ、JBoss Messaging 等
猜你喜欢
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多