专栏首页凯哥JavaRabbitMQ消息中间件技术精讲7 发送自定义属性消息
原创

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

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)

相关代码咨询凯哥

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java EE实用教程笔记----(6)第六章 Struts 2综合应用案例

    本章主要内容是结合前面所学的Struts2框架知识,编写一个简单的借书系统的实例,其实这些主要是JavaWeb的知识,用Struts2开发而已,基础比较扎实的同...

    浩Coding
  • 说说线程的生命周期和状态

    Java 线程在运行的生命周期中的指定时刻,只可能处于下面 6 种不同状态的其中一个(图源《Java 并发编程艺术》4.1.4 节)。

    happyJared
  • 第80节:Java中的MVC设计模式

    事务,设置自动连接提交关闭. setAutoCommit(false); conn.commit(); conn.rollBack

    达达前端
  • 第78节:Java中的网络编程(上)

    网络编程涉及ip,端口,协议,tcp和udp的了解,和对socket通信的网络细节.

    达达前端
  • Mybatis的<mapper>标签 namespace属性说明

    众所周知,Mybatis中有别名设置。比如在主配置文件中用 <typeAliases> 元素设置类的别名,这样就不用每次指定完整的包名了,十分方便。

    浩Coding
  • 第82节:Java中的学生管理系统

    删除,点击超链接,点击弹出对话框式是否进行删除,如果确定,就删除,超链接执行的是js方法,在js里访问,跳转servlet,,servlet中调用dao方法。

    达达前端
  • 第79节:Java中一些要点

    一些知识点忘了没,可以通过一个点引出什么内容呢?做出自己的思维导图,看看自己到了哪一步了呢

    达达前端
  • 使用Eclipse自动创建web.xml文件

    很多时候用Eclipse写Web项目时候,忘记创建web.xml文件了,这就很难受了,下面两种方法教你如何使用Eclipse 自动创建web.xml文件。

    浩Coding
  • 2019Java面试宝典基础篇 -- String类

    一、数组有没有 length属性?String 有没有 length() 方法?

    浩Coding
  • 第83节:Java中的学生管理系统分页功能

    分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页。这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其特点...

    达达前端

扫码关注云+社区

领取腾讯云代金券