前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ消息中间件技术精讲7 发送自定义属性消息

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

原创
作者头像
凯哥Java
修改2019-07-18 09:44:16
1K0
修改2019-07-18 09:44:16
举报
文章被收录于专栏:凯哥Java凯哥Java

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

本文来源:www.kaigejava.com

凯哥公众号:凯哥Java(kaigejava)

相关代码咨询凯哥

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档