- 它可以在分布式的环境下扩展进程之间的通信
- 利用高效可靠的异步消息传递机制集成分布式系统
- 消息模式
- 队列模式 特点 客户端包括生产者和消费者
- 队列中一个消息只能被一个消费者使用
- 消费者可以随时取消息 发送端不需要知道接收端是否正在监听,如果没有接收端则会暂时保存在ActiveMQ服务器中
- 发布订阅模式 特点
- 客户端包括发布者和订阅者
- 一个消息可以同时被多个订阅者消费
- 订阅者不能订阅之前的消息
-
消息格式定义:
StreamMessage:数据流
MapMessage:名称-值对
TextMessage:字符串对象
ObjectMessage:序列化的Java对象
BytesMessage:字节数据流
- Spring整合JMS
- 在src/main/resources下创建spring配置文件applicationContext-jms-producer.xml
- 在sping.xml配置文件中配置 jsmTemplate
- 队列模式 应是ActiveMQQueue 发布订阅模式 ActiveMQTopic
运营商后台执行商品审核后向ActiveMQ发送消息 搜索服务从ActiveMQ收到消息并导入到索引库
在运营商controller层
@Autowired
private Destination destination 点对点模式
@Autowired
private JmsTemplate jmsTemplate
- 将商品list集合转化成json字符串 String jsonString=JSON.toJSONString(itemList)
- jmsTemplate.send(destination ,new messageCreater(){ return session.createTextMessage (jsonString) })
消费者在搜索服务项目中的xml文件中应配置 监听类的引用
- 在项目的serviceImpl中 写java类实现 MessageListener
- 重写 onMessage接口
- String text =message.getText() 获取数据
- JSON.parseArray(text,tbItem.class)
- 网页静态使用ActiveMQ 发布订阅模式 生产者发送 商品id
- 消费者接受id 根据id查询商品信息生成静态化网页