消息形式
点对点
Message Queue —- Sender —- Receive
存储消息 —- 发送消息 —- 接收消息
此模式中,一条消息只能被一个消费者消费,没有被消费的,只能留在队列中,等待被消费,或者超时
发布/订阅方式
用于多接收客户端的方式,并且接收端和发送端存在时间上的依赖
一个接收端只能接收他创建之后发送客户端发送的消息
作为subscriber,在接收消息时有两种方法,destination的receive方法和实现 message listener 接口的 onMessage方法
基本流程
发送消息:
- 创建连接使用的工厂类 JMS ConnectionFactory
- 使用管理对象 JMS ConnectionFactory 建立连接 Connection,并启动
- 使用连接 Connection 建立会话 Session
- 使用会话 Sesssion 和管理对象 Destination 创建消息生产者 MessageSender
-
接收消息
创建连接使用的工厂类 JMS ConnectionFactory
- 使用管理对象 JMS ConnectionFactory 建立连接 Connection,并启动
- 使用连接 Connection 建立会话 Session
- 使用会话 Sesssion 和管理对象 Destination 创建消息接收者 MessageReceiver
使用消息接受者 MessageReceiver 接收消息,需要用 setMessageListener 将 MessageListener接口绑定到 MessageReceiver。消息接收者必须实现了 MessageListener 接口,需要定义 onMessage 事件方法
在springboot中使用ActiveMQ
@Componentpublic class MessageQueue {@Beanpublic Queue queue(){return new ActiveMQQueue("test-message");}@Beanpublic Topic topicQueue(){return new ActiveMQTopic(guicTopic);}}
@Componentpublic class MessageProduction {@Autowiredprivate JmsMessagingTemplate jmsMessagingTemplate;@Autowiredprivate Queue queue;public void send() {jmsMessagingTemplate.convertAndSend(queue, "message");}}
@Componentpublic class MessageListener{@JmsListener(destination = "test-message")public void removeMessage(String msg){System.out.println(msg);}}
```java @SpringBootApplication @EnableJms public class ActiveMQApplication {
} ```
