jms即Java消息服务(Java MessageService)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API
它是一个协议,一个API,具体的可以参考http://baike.baidu.com/view/157103.htm
JMS传递的消息类型
1、 TextMessage 简单文本
2、 ObjectMessage 可序列化的对象
3、 MapMessage 属性集合
4、 BytesMessage 字节流
5、 StreamMessage 原始值流
6、 Message 还有无有效负载的消息
JMS体系组成元素
1、 JMS提供者
2、 JMS客户
3、 JMS生产者
4、 JMS消费者
5、 JMS消息
6、 JMS队列
JMS对象模型
1、 连接工厂(ConnectionFactory)是由管理员创建
2、 JMS连接(Connection)表示JMS客户端和服务器端之间的一个活动的连接
3、 JMS会话(Session)表示JMS客户与JMS服务器之间的会话状态
4、 JMS目的。JMS目的(Destination),又称为消息队列,是实际的消息源。
5、 JMS生产者和消费者。生产者(Message Producer)和消费者(Message Consumer)对象由Session对象创建,用于发送和接收消息。
6、 JMS消息通常有两种类型:点对点(Point-to-Point);发布/订阅(Publish/Subscribe)
ActiveMQ简单例子
publicclass SendMessage {
privatefinalstatic String URL = "tcp://localhost:61616";
privatefinalstatic String QUEUE_NAME = "choice.queue";
publicvoid process(){
try {
//1、创建连接工厂类
ActiveMQConnectionFactory activeMQConnectionFactory = newActiveMQConnectionFactory(URL);
//2、创建工厂
Connection connection =activeMQConnectionFactory.createConnection();
connection.start();
//3、建立会话session,
/*
* 第一个参数是是否使用事务,第二个参数是消费者向发送者确认消息已经接收的方式
* AUTO_ACKNOWLEDGE(自动通知);
*CLIENT_ACKNOWLEDGE(客户端自行决定通知时机);
*DUPS_OK_ACKNOWLEDGE(延时//批量通知)
*/
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4、创建目的地(Destination)和消息提供者(MessageSender )
Destination queueDestination = session.createQueue(QUEUE_NAME);
MessageProducer queueProducer = session.createProducer(queueDestination);
queueProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);//发送方式
//5、创建消息
TextMessage txt = session.createTextMessage("Hello ActiveMQ!!!");
//6、发送消息
queueProducer.send(txt);
//关闭对象
queueProducer.close();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
---------------------------------------------------------------------------------------------------------------------------------
publicclass ReceiverMessage {
privatefinalstatic String URL = "tcp://localhost:61616";
privatefinalstatic String QUEUE_NAME = "choice.queue";
publicvoid process(){
try {
//1、创建连接工厂类
ActiveMQConnectionFactory activeMQConnectionFactory = newActiveMQConnectionFactory(URL);
//2、创建工厂
Connection connection =activeMQConnectionFactory.createConnection();
connection.start();
//3、建立会话session,
/*
* 第一个参数是是否使用事务,第二个参数是消费者向发送者确认消息已经接收的方式
* AUTO_ACKNOWLEDGE(自动通知);
*CLIENT_ACKNOWLEDGE(客户端自行决定通知时机);
*DUPS_OK_ACKNOWLEDGE(延时//批量通知)
*/
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//4、创建目的地(Destination)和消息消费者(MessageConsumer )
Destination queueDestination =session.createQueue(QUEUE_NAME);
MessageConsumer queueConsumer =session.createConsumer(queueDestination);
//5、接受消息
Message message = queueConsumer.receive();
//6、解析消息
if(message instanceof TextMessage){
String txt = ((TextMessage)message).getText();
System.out.println("接受的消息:" + txt);
}
//关闭对象
queueConsumer.close();
session.close();
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
}
}