您现在的位置是:首页 > 后台技术 > 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");
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 {
consumer = session.createConsumer(destination);
运行上面的类,就可以从队列里面接收消息了

上面的这种写法,是消费者去消息队列里取数据,一直不停的取,如果想做到有消息了再去取,则需要写一个监听器类,主要是实现一个接口
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) {
}
}
然后将消费者类中的注释打开即可。
监听器

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

消费者
监听器

首先要下载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 {
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");
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);
}
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处的代码打开,原来的注释即可。
生产者

消费者


很赞哦! ()
上一篇:JAVA空指针的各种情况
下一篇:Log4j日志学习(图文)