RabbitMQ消息中间件技术精讲7 发送自定义属性消息

简介 Binding-绑定Exchange和Exchange、exchange和queue之间的连接关系Binding中可以包含RoutingKey或参数Queue-消息队列消息队列,实际存储消息数据属性:Durability:是否持久化。Durable:是,Transient:否AutoDelete:如选yes,代表当最后一个监听被移除之后,该Queue会自动被删除Message-消息服务器和应用程序

🔔🔔🔔好消息!好消息!🔔🔔🔔

有需要的朋友👉:联系凯哥 微信号 kaigejava2022

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%的投递、幂等性等


TopTop