1.消息组成(JMS message)
ActiveMQ 的消息由消息头、消息体、消息属性三部分组成。
1.1 消息头
消息头包含消息的识别信息和路由信息
1.2 消息体
JMS 定义的消息类型有 TextMessage、MapMessage、BytesMessage、StreamMessag 和 ObjectMessage
TextMessage:String 类型
TextMessage textMessage = session.createTextMessage("hello gongcw");
MapMessage:键/值对
键是 String 类型,值可以是 Java 任何基本类型
MapMessage mapMessage = session.createMapMessage();
mapMessage.setInt("age",18);
mapMessage.setBoolean("flag",true);
BytesMessage:字节流
BytesMessage bytesMessage = session.createBytesMessage();
bytesMessage.writeBytes("gongcw".getBytes());
StreamMessage:输入输出流
ObjectMessage:可序列化对象
1.3 消息属性
TextMessage textMessage = session.createTextMessage("hello gongcw");
textMessage.setStringProperty(key,value); // 设置消息属性
2.消息传递域(JMS domains)
2.1 点对点(p2p)
- 每个消息只能有一个消费者
- 消息的生产者和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,都可以提取消息
2.2 发布订阅(pub/sub)
- 每个消息可以有多个消费者
- 消息的生产者和消费者之间存在时间上的相关性,订阅一个主题的消费者只能消费从它订阅之后发布的消息。JMS 规范允许客户端创建持久订阅