原文地址:http://blog.csdn.net/czp11210/article/details/8822070
Queue(点到点)模式
在点对点的传输方式中,消息数据被持久化,每条消息都能被消费,没有监听QUEUE地址也能被消费,数据不会丢失,一对一的发布接受策略,保证数据完整。
创建MAVEN项目
点击下一步,填写grupId为me.czp,artifactId为example-mq,name为exampleMq,点完成
然后在Package Explorer看到example-mq项目,如下:
创建生产者
package mq.p2p;
import java.util.Date;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnection;
importorg.apache.activemq.ActiveMQConnectionFactory;
public class Producer {
publicstatic void main(String[] args) {
Stringuser = ActiveMQConnection.DEFAULT_USER;
Stringpassword = ActiveMQConnection.DEFAULT_PASSWORD;
Stringurl = ActiveMQConnection.DEFAULT_BROKER_URL;
Stringsubject = "test.queue";
ConnectionFactorycontectionFactory = new ActiveMQConnectionFactory( user, password, url);
try{
Connectionconnection = contectionFactory.createConnection();
connection.start();
Sessionsession = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destinationdestination = session.createQueue(subject);
MessageProducerproducer = session.createProducer(destination);
for(int i = 0; i <= 20; i++) {
MapMessagemessage = session.createMapMessage();
Datedate = new Date();
message.setLong("count",date.getTime());
Thread.sleep(1000);
producer.send(message);
System.out.println("--发送消息:" +date);
}
Thread.sleep(2000);
session.commit();
session.close();
connection.close();
}catch (JMSException e) {
e.printStackTrace();
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
创建消费者
package mq.p2p;
import java.util.Date;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;