RabbitMQ消息中间件技术精讲7 发送自定义属性消息
- RabbitMQ学习系列教程
- 时间:2019-07-18 09:21
- 3708人已阅读
🔔🔔🔔好消息!好消息!🔔🔔🔔
有需要的朋友👉:联系凯哥
Binding-绑定
Exchange和Exchange、exchange和queue之间的连接关系
Binding中可以包含Routing Key或参数
Queue-消息队列
消息队列,实际存储消息数据
属性:
Durability:是否持久化。Durable:是,Transient:否
Auto Delete:如选yes,代表当最后一个监听被移除之后,该Queue会自动被删除
Message-消息
服务器和应用程序之间传递的数据。本质上就是一段数据,由Properties和Payload(Body)组成。
常用属性:delivery mode、headers(自定义属性)
其他属性:content_type、content_encoding(字符集)、priority(优先级0-9)
Correlation_id:可以理解为消息的id 一般是业务+时间戳等。reply_to:做成辉队列的时候失败后返回给那个队列
Expiration:失效时间、message_id 消息id
可以自定义属性:
Timestamp、type、user_id、app_id、cluster_id
实现发送带有附件信息的消息:
AMQP.BasicProperties properties = new AMQP.BasicProperties.builder.build;
可以链式。如下图:
我们来设置过期时间、自定义属性:
在发送消息的时候,将properties带上:
启动生产者,查看发送了5条消息;10s之后,五条消息自动过期。
消费端,消费消息修改:
//获取属性
AMQP.BasicProperties properties = delivery.getProperties;
String appId = properties.getAppId;
Map<String,Object> headerMap =properties.getHeaders;
// String website = (String)headerMap.get("website");
System.err.println("消费端:appId " + appId);
System.err.println("消费端:website " + headerMap.get("website"));
启动消费者消费,查看获取到的自定义信息:
我们可以看到,消费者输出的消息是生产者发送的消息。目标达到。
Virtual host – 虚拟主机
虚拟地址,用于进行逻辑隔离的,最上层的消息路由
需要注意:
1:一个virtual hosot里面可以同时存在多个exchange和queue
2:同一个virtual host里面不能有相同的exchange或queue
总结:
通过本篇,我们主要学会了怎么在发送消息的是,带上其他参数及自定义参数信息的发送及获取。
下节预告:从下一节开始,我们将进入rabbitmq高级篇。如:消息如果保证100%的投递、幂等性等