1、 JMS:
JMS即Java消息服务(Java Message Service)应用程序接口规范,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS 部件 | JMS provider | JMS producer | JMS consumer | JMS message |
---|---|---|---|---|
含义 | 实现JMS 的消息中间件,也就是MQ服务器 | 消息生产者,创建和发送消息的客户端 | 消息消费者,接收和处理消息的客户端 JMS 消息 | 分为消息头、消息属性、消息体 |
消息发送生命类型,接收也是什么类型
消息头:JMS消息头预定义了若干字段用于客户端与JMS提供者之间识别和发送消息,预编译头如下:
//textMessage.setJMSMessageID();选择类型然后设置消息头信息
– JMSDestination:设置目标位置Queue或topic
– JMSDeliveryMode:设置持久化模式
– JMSMessageID:唯一性id
– JMSTimestamp:
– JMSCorrelationID
– JMSReplyTo
– JMSRedelivered
– JMSType
– JMSExpiration:设置过期时间,默认永久(0)
– JMSPriority:设置优先级(0-9),默认4,高优先级优先低优先级
消息体:在消息体中,JMS API定义了五种类型的消息格式(session.creatTextMessage();)
TextMessage : javax.jms.TextMessage,表示一个文本对象
ObjectMessage : javax.jms.ObjectMessage,表示一个序列化的JAVA对象。
BytesMessage : javax.jms.BytesMessage,表示二进制字节数据。
StreamMessage :javax.jms.StreamMessage,表示java原始值数据流。
MapMessage : javax.jms.MapMessage,表示键值对
消息属性:消息头的扩展,以键值对形式设置;可以实现过滤、去重或重点标注
public class Product {
public static final String ACTIVEMQ_URL = "tcp://192.168.25.25:61616";
public static final String TOPIC_NAME = "topic";
public static void main(String[] args) throws JMSException {
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(Product.ACTIVEMQ_URL);
Connection connection = factory.createConnection(ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAULT_PASSWORD);
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = session.createTopic(TOPIC_NAME);
MessageProducer producer = session.createProducer(topic);
for (int i = 1; i < 4; i++) {
TextMessage textMessage = session.createTextMessage("hello activeMQ"+i);
textMessage.setJMSMessageID("5645655");//设置消息头
textMessage.setBooleanProperty("isVip",false);//消息属性
producer.send(textMessage);//也可以设置部分消息头信息,例如目标位置
}
producer.close();
session.close();
connection.close();
}
}