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 )
相关标识 - 与这个相关的消息,比如 请求这里消息的请求。 建议应用程序使用这里属性,而不是将这里信息放入消息负载。
上下文:应用程序使用
值:任何值
交付模式——消息应该持久化到磁盘?
上下文:队列实现使用
值:non-persistent ( 1 ) 或者持久( 2 )
过期——过期时间之后,消息将被删除。 过期字段的值描述的TTL周期以毫秒计。 请查看下面的详细信息。
上下文:队列实现使用
英镑头 - 任意application-specific消息头。
上下文:应用程序使用
邮件标识符 - 消息标识符为字符串。 如果应用程序需要识别消息,建议使用这里属性而不是将它的放入消息负载。
上下文:应用程序使用
值:任何值
优先级 - 消息优先级。
上下文:队列实现使用
值:0到 9
英镑ReplyTo队列名称其他应用程序应发送响应到。 通常用于命名应答队列( 或者其他帮助使用者应用程序直接响应它的响应的标识符) 。 建议应用程序使用这里属性,而不是将这里信息放入消息负载。
上下文:应用程序使用
值:任何值
Time-stamp - 发送消息时的时间戳。
上下文:应用程序使用
值:纪元之后的秒数。
类型 - 消息类型,比如的事件类型或者这里消息代表的命令类型。 建议由应用程序使用,而不是将这里信息包含到消息负载中。
上下文:应用程序使用
值:可以是任意字符串。
用户标识 - 可选用户标识。 RabbitMQ验证了实际连接用户名。
上下文:队列实现使用
值:应该是经过身份验证的用户。
-
body 消息体,payload真正需要发送的消息
-
mandatory true时,交换器无法根据自动的类型和路由键找到一个符合条件的队列,那么RabbitMq会调用Basic.Ruturn命令将消息返回给生产都,为false时,出现上述情况消息被直接丢弃
-
immediate true,如果交换器在消息路由到队列时发现没有任何消费者,那么
这个消息将不会存和队列,当与路由匹配的所有队列都没有消费者时,会Basic.Return返回给生产者3.0去掉了immediate 参数
immediate和mandatory 都是消息传递过程中,不可达目的地是,将消息返回给生产者的功能
网友评论