RabbitMQ(五):RabbitMQ-发送消息basicPublish

内容比较少,有待补充……props里的expiration过期时间可以控制消息生命周期(后来用的到)

转载地址:https://www.jianshu.com/p/b8e97606e309

basicPublish

 channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY,MessageProperties.PERSISTENT_TEXT_PLAIN , message.getBytes());

basicPublish方法

 void basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body) throws IOException;

 void basicPublish(String exchange, String routingKey, boolean mandatory, BasicProperties props, byte[] body)throws IOException;

 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) throws IOException;

exchange 交换器名称

routingKey  路由键

props 有14个成员

 public static class BasicProperties extends com.rabbitmq.client.impl.AMQBasicProperties {

        private String contentType;   //消息类型如(text/plain)

        private String contentEncoding; //编码

        private Map<String,Object> headers; //header

        private Integer deliveryMode; //消息的投递模式

        private Integer priority; //优先级

        private String correlationId;

        private String replyTo;

        private String expiration; //过期时间

        private String messageId;

        private Date timestamp;

        private String type;

        private String userId;

        private String appId;

        private String clusterId;

应用程序标识号 - 生成消息的应用程序标识符。

上下文:应用程序使用

值:可以是任意字符串。

内容编码 - 消息内容编码

上下文:应用程序使用

值:MIME内容类型( 比如 。 gzip )

内容类型 - 消息内容类型

上下文:应用程序使用

值:MIME内容编码( 比如 。 应用程序/json )

相关标识 - 与这个相关的消息,比如 请求这里消息的请求。 建议应用程序使用这里属性,而不是将这里信息放入消息负载。

上下文:应用程序使用

值:任何值

deliveryMode-交付模式——消息应该持久化到磁盘?

上下文:队列实现使用

值:non-persistent ( 1 ) 或者持久( 2 )

expiration-过期——过期时间之后,消息将被删除。 过期字段的值描述的TTL周期以毫秒计。 请查看下面的详细信息。

上下文:队列实现使用

英镑头 - 任意application-specific消息头。

上下文:应用程序使用

邮件标识符 - 消息标识符为字符串。 如果应用程序需要识别消息,建议使用这里属性而不是将它的放入消息负载。

上下文:应用程序使用

值:任何值

priority-优先级 - 消息优先级。

上下文:队列实现使用

值:0到 9

ReplyTo队列名称其他应用程序应发送响应到。 通常用于命名应答队列( 或者其他帮助使用者应用程序直接响应它的响应的标识符) 。 建议应用程序使用这里属性,而不是将这里信息放入消息负载。

上下文:应用程序使用

值:任何值

Time-stamp - 发送消息时的时间戳。

上下文:应用程序使用

值:纪元之后的秒数。

type-类型 - 消息类型,比如的事件类型或者这里消息代表的命令类型。 建议由应用程序使用,而不是将这里信息包含到消息负载中。

上下文:应用程序使用

值:可以是任意字符串。

clusterId-用户标识 - 可选用户标识。 RabbitMQ验证了实际连接用户名。

上下文:队列实现使用

值:应该是经过身份验证的用户。

 

body 消息体,payload真正需要发送的消息

mandatory   true时,交换器无法根据自动的类型和路由键找到一个符合条件的队列,那么RabbitMq会调用Basic.Ruturn命令将消息返回给生产都,为false时,出现上述情况消息被直接丢弃

immediate  true,如果交换器在消息路由到队列时发现没有任何消费者,那么

这个消息将不会存和队列,当与路由匹配的所有队列都没有消费者时,会Basic.Return返回给生产者,3.0去掉了immediate  参数

immediate和mandatory  都是消息传递过程中,不可达目的地是,将消息返回给生产者的功能。

猜你喜欢

转载自blog.csdn.net/weixin_40805079/article/details/85631268