消息生产者:队列
package com.atchengdu.activemq;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
/**
* MQ消息生产者
*/
public class ativemqfectory {
private static final String MQ_URL="tcp://ip:61616";
private static final String QUEUE_NAME="Queue01";
/**
* 创建链接工厂 (添加 url username password)
* @param args
*/
public static void main(String[] args) throws JMSException, IOException {
//创建链接工厂 (添加 url username password)
ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(MQ_URL);
//获取链接,获得链接Factory并启动方法
Connection connection=factory.createConnection();
connection.start();
//创建会话session (两个参数:事务,签收)
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地
Queue queue = session.createQueue(QUEUE_NAME);
//创建消息的生成者
MessageProducer producer = session.createProducer(queue);
//发送消息(到mq的队列中)
for (int i = 1; i <=3 ; i++) {
//创建消息(字符床)
TextMessage textMessage = session.createTextMessage("msg----->" + i);
//通过messageproducer发送给mq
producer.send(textMessage);
}
//关闭
System.in.read();
producer.close();
session.close();
connection.close();
System.out.println("成功了");
}
}
消息接受者:队列
package com.atchengdu.activemq;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
/**
*消息接受者
*不同情况:
*第一种:产生消息再开启消费线程,第一个线程会处理所有的消息。其他线程等待
*第二章:先开启消息消费线程,在开启生产线程,消费线程会平分消息
*/
public class activeConstmer {
private static final String MQ_URL="tcp://ip:61616";
private static final String QUEUE_NAME="Queue01";
public static void main(String[] args) throws JMSException, IOException {
//创建链接工厂 (添加 url username password)
ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(MQ_URL);
//获取链接,获得链接Factory并启动方法
Connection connection=factory.createConnection();
connection.start();//启动
//创建会话session (两个参数:事务,签收)
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地
Queue queue = session.createQueue(QUEUE_NAME);
//创建消费者
MessageConsumer consumer = session.createConsumer(queue);
//接受信息
/*while (true){
TextMessage textmessage = (TextMessage) consumer.receive(4000);
if(null !=textmessage){
System.out.println("接受消息"+textmessage.getText());
}else {
break;
}
}
//关闭
consumer.close();
session.close();
connection.close();*/
//监听的方式来接受消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
if(null !=message && message instanceof TextMessage){
TextMessage textMessage= (TextMessage) message;
try {
System.out.println("*****消息******"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
System.in.read();
consumer.close();
session.close();
connection.close();
}
}
消息生产者:主题
package com.atchengdu.topic;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
/**Topic主题订阅发送
*队列消息的生产者
*/
public class TopicactivvemqFactory {
private static final String ACTIVE_URL="tcp://ip.128:61616";
private static final String TOPIC_NAME="mytopic01";
public static void main(String[] args) throws JMSException, IOException {
//创建链接工厂,采用默认的username, password
ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(ACTIVE_URL);
//创建链接并且启动
Connection connection = factory.createConnection();
connection.start();
//创建会话,设置参数
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(TOPIC_NAME);
//创建消息的生产者
MessageProducer producer = session.createProducer(topic);
//创建消息
for (int i = 1; i <=3 ; i++) {
TextMessage textMessage = session.createTextMessage("topic----->" + i);
producer.send(textMessage);
}
//关闭
System.in.read();
producer.close();
session.close();
connection.close();
System.out.println("消息发送成功");
}
}
消息接受者:主题
package com.atchengdu.topic;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
/**Topic主题订阅
*
*/
public class Topicactivvemqconstermer {
private static final String MQ_URL="tcp://ip:61616";
private static final String TOPIC_NAME="mytopic01";
public static void main(String[] args) throws JMSException, IOException {
//创建链接工厂 (添加 url username password)
ActiveMQConnectionFactory factory=new ActiveMQConnectionFactory(MQ_URL);
//获取链接,获得链接Factory并启动方法
Connection connection=factory.createConnection();
connection.start();//启动
//创建会话session (两个参数:事务,签收)
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建目的地
Topic topic = session.createTopic(TOPIC_NAME);
//创建消费者
MessageConsumer consumer = session.createConsumer(topic);
//接受信息
/*while (true){
TextMessage textmessage = (TextMessage) consumer.receive(4000);
if(null !=textmessage){
System.out.println("接受消息"+textmessage.getText());
}else {
break;
}
}
//关闭
consumer.close();
session.close();
connection.close();*/
//监听的方式来接受消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
if(null !=message && message instanceof TextMessage){
TextMessage textMessage= (TextMessage) message;
try {
System.out.println("*****消息******"+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
System.in.read();
consumer.close();
session.close();
connection.close();
System.out.println("2号消费者");
}
}