ActiveMQ 学习笔记

一、生产者发送消息

package Mq;

import java.util.Scanner;

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

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

public class JmsConsumer {
private static String userName = "system";// 用户名
private static String passWord = "manager";// 密码
private static String brokerUrl = ActiveMQConnection.DEFAULT_BROKER_URL;// 连接地址
// 连接工厂
private static ConnectionFactory connectionFactory;
// 连接
private static Connection connection;
// 会话
private static Session session;
// 消息生产者
private static MessageProducer messageProducer;
// 消息队列
private static Destination destination;

public static void main(String[] args) {
try {
if (init()) {
System.out.println("初始化成功");
while(true){
Scanner scanner=new Scanner(System.in);
String message=scanner.nextLine();
try {
sendMessage(message);
} catch (Exception e) {
System.out.println("发送失败");
e.printStackTrace();
}
}
}
} catch (Exception e) {
System.out.println("初始化失败");
e.printStackTrace();
}
}

private static Boolean init() throws Exception {
// 创建连接工厂
connectionFactory = new ActiveMQConnectionFactory(userName, passWord,
brokerUrl);
// 用连接工厂获取连接
connection = connectionFactory.createConnection();
// 启动连接
connection.start();
// 创建会话
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
// 创建名称为HelloWorld的消息队列
destination = session.createQueue("HelloWorld");
// 创建消息生产者
messageProducer = session.createProducer(destination);
// 初始化成功
return true;
}

private static void sendMessage(String message) throws Exception {
// 发送消息
TextMessage textMessage = session.createTextMessage(message);
messageProducer.send(textMessage);
session.commit();
}

}

 

二、消费者消费消息

package Mq;

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

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

public class JmsProduct {
private static String userName = "system";// 用户名
private static String passWord = "manager";// 密码
private static String brokerUrl = ActiveMQConnection.DEFAULT_BROKER_URL;// 连接地址

public static void main(String[] args) {
// 连接工厂
ConnectionFactory connectionFactory;
// 连接
Connection connection;
// 会话
Session session;
// 消息消费者
MessageConsumer messageConsumer;
//消息目的地
Destination destination;
//创建连接工厂
connectionFactory = new ActiveMQConnectionFactory(userName, passWord,
brokerUrl);

try {
// 用连接工厂获取连接
connection = connectionFactory.createConnection();
// 启动连接
connection.start();
//获取会话
session=connection.createSession(true,Session.AUTO_ACKNOWLEDGE);
destination=session.createQueue("HelloWorld");
//创建消费者
messageConsumer=session.createConsumer(destination);

while (true) {
TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
if(textMessage != null){
System.out.println("收到的消息:" + textMessage.getText());
}else {
break;
}
}
} catch (Exception e) {

}
}

}

 

特别说明:当生产者生产消息之后如果消费者没有消费会在MQ中存储当消费者一上线立即消费。

posted @ 2017-02-10 17:24  OpenSource_coffee  阅读(181)  评论(0)    收藏  举报