/**
* 测试类
* @author Jan
*
*/
public class Test {
private ConnectionFactory cf = null;// 通过这个工厂类就可以得到一个与JMS提供者的连接,即Conection。
private Connection con = null;//与JMS提供者建立的一个连接。可以从这个连接创建一个会话,即Session。
/*
* Destination:消息发送的目的地,也就是前面说的Queue和Topic。
* 创建好一个消息之后,只需要把这个消息发送到目的地,消息的发送者就可以继续做自己的事情,
* 而不用等待消息被处理完成。至于这个消息什么时候,会被哪个消费者消费,完全取决于消息的接受者。
*/
private Queue queue = null;
private Session session = null;// 与JMS提供者建立的一个连接。可以从这个连接创建一个会话,即Session。
/*
* Message:从字面上就可以看出是被发送的消息。它有下面几种类型:
* StreamMessage:Java数据流消息,用标准流操作来顺序的填充和读取。
* MapMessage:一个Map类型的消息;名称为 string 类型,而值为 Java的基本类型。
* TextMessage:普通字符串消息,包含一个String。
* ObjectMessage:对象消息,包含一个可序列化的Java对象
* BytesMessage:二进制数组消息,包含一个byte[]。
* XMLMessage: 一个XML类型的消息。
* 最常用的是TextMessage和ObjectMessage。
*/
private Message mes = null; // 与JMS提供者所建立的会话,通过Session我们才可以创建一个Message。
private MessageProducer producer = null;// 消息的生产者,要发送一个消息,必须通过这个生产者来发送。
private MessageConsumer comsumer = null;// 与生产者相对应,这是消息的消费者或接收者,通过它来接收一个消息。
/**
* 构造函数
*
* @param name
* @throws Exception
*/
public Test(String name) throws Exception {
cf = new ActiveMQConnectionFactory("vm://localhost:801");//获得一个ConnectionFactory工厂
con = cf.createConnection();//从工厂内获得一个连接
con.start();//启动此Connection
queue = new ActiveMQQueue(name);//创建一个一对一的Queue作为Destination。
session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);//从Connction获得一个session会话
mes = session.createTextMessage("hello mes");//设置发送消息的文本
}
/**
* 发送消息
*
* @throws Exception
*/
public void sendMes() throws Exception {
producer = session.createProducer(queue);//创建一个消息的发送者
producer.send(mes);//发送消息
}
/**
* 接收消息
*/
public void receiveMes() throws Exception {
comsumer = session.createConsumer(queue);//创建一个消息的接收者
Message me = comsumer.receive();//接收消息
System.out.println(((TextMessage) me).getText());//输出消息内容
}
JMS点对点的消息发送(一)
最新推荐文章于 2021-08-23 14:33:47 发布