Java 使用活动MQ的JMS示例

Java 使用活动MQ的JMS示例,java,jms,activemq,Java,Jms,Activemq,我想学习使用活动MQ的JMS应用程序。 因此,下载了apache-activemq-5.5.1并启动了服务器 并找到示例代码,但不起作用。为什么会发生以下异常? 注意:我将activemq库添加到我的项目中,该库包含org.slf4j模块 import javax.jms.*; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.MessageListener; //JMS Prod

我想学习使用活动MQ的JMS应用程序。
因此,下载了apache-activemq-5.5.1并启动了服务器
并找到示例代码,但不起作用。为什么会发生以下异常?
注意:我将activemq库添加到我的项目中,该库包含org.slf4j模块

 import javax.jms.*;  
 import org.apache.activemq.ActiveMQConnectionFactory;
 import javax.jms.MessageListener;

      //JMS Producer         
       public class JMSProducer {
                public void produce() {
                   String url = "tcp://localhost:61616";
                   ConnectionFactory factory = new ActiveMQConnectionFactory(url);
                     try {
                         Connection connection = factory.createConnection();
                         Session session = connection.createSession(false,
                              Session.AUTO_ACKNOWLEDGE);
                           Topic topic = session.createTopic("TestTopic");
                           MessageProducer producer = session.createProducer(topic);
                          TextMessage msg = session.createTextMessage();
                           msg.setText("Hello JMS World");
                           producer.send(msg);
                   }
                    catch(JMSException exp) {
                     }
                }
           }

  //JMS Consumer
  public class JMSConsumer {
           public void consume() {
               String url = "tcp://localhost:61616";
               ConnectionFactory factory = new ActiveMQConnectionFactory(url);
               try {
                   Connection connection = factory.createConnection();
                    Session session = connection.createSession(false,
                        Session.AUTO_ACKNOWLEDGE);
                     Topic topic = session.createTopic("TestTopic");
                     MessageConsumer consumer = session.createConsumer(topic);
                     JMSMessageListener listener = new JMSMessageListener();
                     consumer.setMessageListener(listener);
                     connection.start();
               }
               catch(JMSException exp) {
               }
           }
       }

//JMS Message Listener
public class JMSMessageListener implements MessageListener {
        @Override
           public void onMessage(javax.jms.Message msg) {
               System.out.println(msg.toString());
           }
       }

当org.slf4j.impl.StaticLoggerBinder 类无法加载到内存中。如果没有,就会发生这种情况 在类路径上可以找到适当的SLF4J绑定。放置 slf4j-nop.jar中的一个(并且只有一个),slf4j-simple.jar, 类上的slf4j-log4j12.jar、slf4j-jdk14.jar或logback-classic.jar 路径应该解决问题

自SLF4J 1.6版1.6.0起,在没有绑定的情况下, SLF4J将默认为无操作(NOP)记录器实现

您可以从项目下载页面下载SLF4J绑定


+1-这对我很有帮助。有一个pom,我尝试了不同的使用JMS的方法,还有glassfish,它的SLF4J版本比ActiveMQ 5.9.1要求的版本更旧。在pom中注释掉glassfish的依赖关系使一切都正常工作。