Spring消息中间件ActiveMQ
1:下载ActiveMQ (apache-activemq-5.15.6)
2:下载后的结构如下
3:启动activeMQ
可以通过cmd控制台的方式,也可以通过注册services服务启动的方式
3.1:通过cmd的方式启动,看是win32还是win64的系统,我在此以win64为例.选中activemq.bat,点击反键,以管理员身份运行
3.2:通过注册服务的方式启动,注册好后,可以直接通过服务中进行启动
选中InstallService.bat,以管理员的身份运行
注册成功后ActiveMQ启动即可
3.3;ActiveMQ的管理端访问页面http://127.0.0.1:8161 ,用户名和密码都是admin
4:编码(有种不同的方式实现ActiveMQ,主题模式和队列模式)
4.1主题模式
提供者Producer
package com.svse.topit;
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.ActiveMQConnectionFactory;
/***
* active 主题模式
* @author lenovo
*
*/
public class AppProducer {
private static final String url="tcp://127.0.0.1:61616";
private static final String topicName="topic-test";
public static void main(String[] args) throws JMSException {
//创建connectionFactory工厂
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);
//创建connection
Connection connection=connectionFactory.createConnection();
//启动连接
connection.start();
//创建会话
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个目标
Destination destination=session.createTopic(topicName);
//创建一个生产者
MessageProducer message= session.createProducer(destination);
for (int i = 0; i < 100; i++) {
//创建消息
TextMessage textMessage=session.createTextMessage("test"+i);
//发布消息
message.send(textMessage);
System.out.println("发送的消息:"+textMessage.getText());
}
//关闭连接
connection.close();
}
}
消费者Consumer
package com.svse.queue;
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.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class AppConsumer {
private static final String url="tcp://127.0.0.1:61616";
private static final String queueName="queue-test";
public static void main(String[] args) throws JMSException {
// TODO Auto-generated method stub
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);
Connection connection=connectionFactory.createConnection();
connection.start();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination=session.createQueue(queueName);
MessageConsumer consumer=session.createConsumer(destination);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage) message;
try {
System.out.println("接收到的消息:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
//connection.close();
}
}
4.2队列模式
提供者Producer
package com.svse.queue;
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.ActiveMQConnectionFactory;
/***
* active 队列模式
* @author lenovo
*
*/
public class AppProducer {
private static final String url="tcp://127.0.0.1:61616";
private static final String queueName="queue-test";
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);
Connection connection=connectionFactory.createConnection();
connection.start();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination=session.createQueue(queueName);
MessageProducer message= session.createProducer(destination);
for (int i = 0; i < 100; i++) {
TextMessage textMessage=session.createTextMessage("test"+i);
message.send(textMessage);
System.out.println("发送的消息:"+textMessage.getText());
}
connection.close();
}
}
消费者Consumer
package com.svse.queue;
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.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class AppConsumer {
private static final String url="tcp://127.0.0.1:61616";
private static final String queueName="queue-test";
public static void main(String[] args) throws JMSException {
// TODO Auto-generated method stub
ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);
Connection connection=connectionFactory.createConnection();
connection.start();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination=session.createQueue(queueName);
MessageConsumer consumer=session.createConsumer(destination);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage textMessage=(TextMessage) message;
try {
System.out.println("接收到的消息:"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
//connection.close();
}
}