消息生产者:
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Producer {
private static final String USERNAME= ActiveMQConnection.DEFAULT_USER; //默认连接用户名
private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;//默认连接密码
private static final String BROKER_URL=ActiveMQConnection.DEFAULT_BROKER_URL;//默认连接地址
private static final int SENDNUM=10; //发送的消息数量
public static void main(String[] args) {
ConnectionFactory connectionFactory;
Connection connection=null;
Session session; //接收或发送消息
Destination destination; //消息的目的地
MessageProducer messageProducer; //消息生产者
try {
connectionFactory=new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKER_URL);
connection=connectionFactory.createConnection(); //通过连接工厂获取连接
connection.start(); //启动连接
//第一个参数表示是否开启事务,第二个表示确认事务的方式
session=connection.createSession(true,Session.AUTO_ACKNOWLEDGE); //创建Session
destination=session.createQueue("FirstQueue"); //创建消息队列
messageProducer=session.createProducer(destination);//创建消息生产者
sendMessage(session,messageProducer); //发送消息
session.commit(); //由于开启了事务,所以要提交事务
} catch (JMSException e) {
e.printStackTrace();
} finally {
if (connection!=null){
try {
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
}
//发送消息
private static void sendMessage(Session session,MessageProducer messageProducer){
try {
for (int i = 0; i < SENDNUM; i++) {
TextMessage message=session.createTextMessage("ActiveMQ 发送的消息"+i);
System.out.println("发送的消息 : ActiveMQ 发送的消息"+i);
messageProducer.send(message); //发送消息
}
} catch (JMSException e){
e.printStackTrace();
}
}
}
消息消费者:
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Customer {
private static final String USERNAME= ActiveMQConnection.DEFAULT_USER; //默认连接用户名
private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;//默认连接密码
private static final String BROKER_URL=ActiveMQConnection.DEFAULT_BROKER_URL;//默认连接地址
public static void main(String[] args) {
ConnectionFactory connectionFactory;
Connection connection=null;
Session session; //接收或发送消息
Destination destination; //消息的目的地
MessageConsumer messageConsumer; //消息消费者
try {
connectionFactory=new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKER_URL);
connection=connectionFactory.createConnection();
connection.start();
session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
destination=session.createQueue("FirstQueue"); //创建连接的消息队列
messageConsumer=session.createConsumer(destination);
/*while (true){
TextMessage textMessage= (TextMessage) messageConsumer.receive(1000);
if (textMessage!=null){
System.out.println("收到的消息:"+textMessage.getText());
}
else {
break;
}
}*/
messageConsumer.setMessageListener(new Listener()); //注册消息监听
} catch (JMSException e){
e.printStackTrace();
}
}
}
监听器:
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 message) {
try {
System.out.println("收到的消息: "+((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}