您现在的位置是:首页 > 后台技术 > JavaJava

ActiveMQ学习记录(图文)

第十三双眼睛2019-09-02【Java】人已围观

简介昨天用了1个下午的时间学习了ActiveMQ东西,为了以后要用的时候方便查询,记录一下。

昨天用了一个下午的时间去学习ActiveMQ,特意记录一下使用方法
首先要下载ActiveMQ的软件包,进行启动,启动以后,再浏览器里输入本机ip和端口号,就可以访问了,默认的端口号是8161
1建一个普通的java项目,再项目下新建一个文件夹,用来存放MQ使用的jar包

2将这个jar包添加值buildpath中,这样,就能识别到这个jar包了。
接下来就是写代码了:
先创建一个消息的生产者类,
package javamq.test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

public class Producer {
         private static final String userName = ActiveMQConnection.DEFAULT_USER;
         private static final String password = ActiveMQConnection.DEFAULT_PASSWORD;
         private static final String brokeUrl = ActiveMQConnection.DEFAULT_BROKER_URL;
         private static final int sendNum = 10;

         public static void main(String[] args) {
         ConnectionFactory  factory = null;
         Connection connection = null;
         Session session = null;
         Destination destination = null;
         MessageProducer produce = null;
         factory = new ActiveMQConnectionFactory(Producer.userName,Producer.password , Producer.brokeUrl);
         try {
                  connection = factory.createConnection();
                  connection.start();
                  session = connection.createSession(Boolean.TRUE, session.AUTO_ACKNOWLEDGE);
                  destination = session.createQueue("testQuene");
 //destination = session.createTopic("testtopic");
                  produce = session.createProducer(destination);
                  for(int i=1;i<=10;i++){
                           TextMessage textMessage = session.createTextMessage("我学习mq呢"+i);
                           produce.send(textMessage);
                           System.out.println("发送成功"+textMessage);
                  }
                  session.commit();
         } catch (JMSException e) {
                  e.printStackTrace();
         }finally{
                  if(connection!=null){
         try {
                  connection.close();
         } catch (JMSException e) {
                  e.printStackTrace();
         }
         }
         }
         }
}
执行上面的代码,就可以网队列里面发送消息了。

3再写一个消费者的类
package javamq.test;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.log4j.net.SyslogAppender;

public class Consumer {
private static final String userName = ActiveMQConnection.DEFAULT_USER;
private static final String password = ActiveMQConnection.DEFAULT_PASSWORD;
private static final String brokeUrl = ActiveMQConnection.DEFAULT_BROKER_URL;
public static void main(String[] args) {
ConnectionFactory  factory = null;
Connection connection = null;
Session session = null;
Destination destination = null;
MessageConsumer consumer = null;
factory = new ActiveMQConnectionFactory(Consumer.userName,Consumer.password , Consumer.brokeUrl);
try {
connection = factory.createConnection();
connection.start();
session = connection.createSession(false, session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("testQuene");
//destination = session.createTopic("testtopic");

consumer = session.createConsumer(destination);
//consumer.setMessageListener(new Listener());
while(true){
TextMessage receive = (TextMessage)consumer.receive(1000);
System.out.println(receive);
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}
运行上面的类,就可以从队列里面接收消息了

上面的这种写法,是消费者去消息队列里取数据,一直不停的取,如果想做到有消息了再去取,则需要写一个监听器类,主要是实现一个接口
package javamq.test;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

public class Listener implements MessageListener {

@Override
public void onMessage(Message arg0) {
try {
System.out.println("收到的消息"+((TextMessage)arg0).getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

然后将消费者类中的注释打开即可。
监听器

4也可以是发布订阅方式,只需要将生产者类中的destination创建出的注释打开,原来的注释掉,生产者就完成了。然后将消费者的destination处的代码打开,原来的注释即可。
生产者

消费者
监听器


Tags:ActiveMQ   MQ

很赞哦! ()

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们