PTP(点对点的消息模型)
在点对点模型中,相当于两个人打电话,两个人独享一条通信线路。一方发送消息,一方接收消息。
在p2p的模型中,双方通过队列交流,一个队列只有一个生产者和一个消费者。
1、建立项目
建立一个java项目,导入jar包,将apache-activemq-5.11.1-bin.zip解压缩后里面的activemq-all-5.11.1.jar包加入到classpath下面,这个包包含了所有JMS接口API的实现。
点对点的消息模型,只需要一个消息生成者和消息消费者。
编写生产者
package com.tgb.activemq;
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;/**
* 消息的生产者(发送者)
* @author liang
**/
public classJMSProducer {//默认连接用户名
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 voidmain(String[] args) {//连接工厂
ConnectionFactory connectionFactory;//连接
Connection connection = null;//会话 接受或者发送消息的线程
Session session;//消息的目的地
Destination destination;//消息生产者
MessageProducer messageProducer;//实例化连接工厂
connectionFactory = newActiveMQConnectionFactory(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);try{//通过连接工厂获取连接
connection =connectionFactory.createConnection();//启动连接
connection.start();//创建session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);//创建一个名称为HelloWorld的消息队列
destination = session.createQueue("HelloWorld");//创建消息生产者
messageProducer =session.createProducer(destination);//发送消息
sendMessage(session, messageProducer);
session.commit();
}catch(Exception e) {
e.printStackTrace();
}finally{if(connection != null){try{
connection.close();
}catch(JMSException e) {
e.printStackTrace();
}
}
}
}/**
* 发送消息
* @param session
* @param messageProducer 消息生产者
* @throws Exception*/
public static voidsendMessage(Session session,MessageProducer messageProducer) throws Exception{for (int i = 0; i < JMSProducer.SENDNUM; i++) {//创建一条文本消息
TextMessage message = session.createTextMessage("ActiveMQ 发送消息" +i);
System.out.println("发送消息:Activemq 发送消息" +i);//通过消息生产者发出消息
messageProducer.send(message);
}
}
}
View Code
编写消费者