我需要实现这个场景简要说明 有两个基于Java的Web应用程序托管在两个不同的tomcat实例上,如T1和T2。当T2上的内容发生变化时 我想将内容名称和日期修改为T1正在侦听的队列。一旦T2将其排队,T1应该记录这些 数据库表中的三列,即prim键,ContentName和Modified date。我没有得到如何开始实施 JMS在这里,因为我是JMS的外行人?我只知道JMS使用队列,其中一个应用程序可能是发布者而其他应用程序将是消费者。 任何帮助如何开始这将是非常有利的?我正在使用tomcat进行这两个应用程序。在网上的不同网站上,有两种材料会让人感到困惑(事实上我很难实现这一点:()
答案 0 :(得分:3)
如果您的时间很短,那么跳过JMS ,实际上如果您有很长时间跳过JMS ,则它不适合您的简单用例。一个简单的Servlet可以接收消息并处理它们就足够了。
JMS是一个过于复杂的过度泛化层,应该更加简单。如果你只是必须使用某种排队系统,他们会考虑使用某种类型的RabbitMQ或Stomp客户端的直接客户端库来更轻松,更简单。
如果您确实感到需要,您可以随时返回并添加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();