如何在这个简单的场景中开始实现JMS?

时间:2012-02-29 11:19:56

标签: java jms

我需要实现这个场景简要说明 有两个基于Java的Web应用程序托管在两个不同的tomcat实例上,如T1和T2。当T2上的内容发生变化时 我想将内容名称和日期修改为T1正在侦听的队列。一旦T2将其排队,T1应该记录这些 数据库表中的三列,即prim键,ContentName和Modified date。我没有得到如何开始实施 JMS在这里,因为我是JMS的外行人?我只知道JMS使用队列,其中一个应用程序可能是发布者而其他应用程序将是消费者。 任何帮助如何开始这将是非常有利的?我正在使用tomcat进行这两个应用程序。在网上的不同网站上,有两种材料会让人感到困惑(事实上我很难实现这一点:()

2 个答案:

答案 0 :(得分:3)

如果您的时间很短,那么跳过JMS ,实际上如果您有很长时间跳过JMS ,则它不适合您的简单用例。一个简单的Servlet可以接收消息并处理它们就足够了。

JMS是一个过于复杂的过度泛化层,应该更加简单。如果你只是必须使用某种排队系统,他们会考虑使用某种类型的RabbitMQStomp客户端的直接客户端库来更轻松,更简单。

如果您确实感到需要,您可以随时返回并添加JMS客户端包装器的开销和复杂性,这是一个您不会获得的提示。

答案 1 :(得分:2)

冷静下来,开始阅读。在获得可运行代码之前,有一些简短的教程不会花费太多时间来解释理论。这不错:http://java.sun.com/developer/technicalArticles/Ecommerce/jms/

基本上你从某个地方获得连接工厂。 (可以通过JNDI查找或者您可以直接创建它。)您要求工厂创建连接,创建会话的连接,其余来自会话。

要发送消息,您可以使用以下内容:

   ConnectionFactory factory = getJMSConnectionFactory();
   Connection connection = factory.createConnection();
   Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   Queue queue = session.createQueue("MyQueue");
   MessageProducer producer = session.createProducer(queue);
   connection.start();
   Message message = session.createTextMessage("hello world!");
   producer.sendMessage(message);

要接收消息,您可以使用以下内容:

   ConnectionFactory factory = getJMSConnectionFactory();
   Connection connection = factory.createConnection();
   Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
   Queue queue = session.createQueue("MyQueue");
   MessageConsumer consumer = session.createConsumer(queue);
   connection.start();
   Message message = consumer.receive();