消息
MQ(MessageQueue)消息队列/消息中间件,“先进先出”
企业级三种 异步消息传递技术规范:JMS、AMQP、MQTT
JMS(Java Message Service):等同jdbc,提供与消息服务相关的API接口,
JMS消息模型:
1.peer-2-peer:点对点模型,1个生产者对应1个消费者
2.publish-subscribe: 发布订阅模型,类似Redis,多个生产者对应多个消费者
JMS消息种类:Text,Map,Bytes,Stream,Stream,Object,Message(只有消息头和属性)
JMS实现产品:ActiveMQ、Redis、HornetMQ、RabbitMQ、RocketMQ(没有完全遵守JMS规范)
AMQP(advanced message queuing protocol):高级消息队列协议,规范了网络交换的数据格式,兼容JMS
优点:跨平台、服务器供应商,生产者,消费者无语言隔阂
AMQP消息模型:direct exchange、fanout exchange、topiic exchange、headers exchange、system exchange.
统一消息种类:byte[]
AMQP实现产品:RabbitMQ、StormMQ、RocketMQ
MQTT(Message Queueing Telemetry Transport):消息队列遥测传输,专为 小设备设计,应用于物联网
Kafka:,一种高吞吐量的分布式发布订阅消息系统,提供实时消息功能。
ActiveMQ
下载地址:https://activemq.apache.org/components/classic/download/
启动:activemq.bat
访问服务器:http://127.0.0.1:8161
服务端口:61616,管理后台端口:8161
用户名&密码:admin
- 依赖:spring-boot-starter-activemq
- 导入api:(自定义类实现MessageService) @Autowired private JmsMessagingTemplate messagingTemplate;
放入消息:(需要指定放入的位置)
方式1:convertAndSend(String destinationName, Object payload) //destinationName:规格命名:所属业务.队列名称.
方式2:
配置文件
server:
port: 80
spring:
activemq:
#代理地址
broker-url: tcp://localhost:61616
jms:
#打开发布订阅模型
pub-sub-domain: true
template:
default-destination: itheima
取出消息:
messagingTemplate.receiveAndConvert("queue.id",String.class);
自动监听取出消息
public class MessageListener {
@JmsListener(destination = "order.queue.id")
@SendTo("newqueue.id") //将返回结果发送到指定队列
public String receive(String<