美文网首页
RabbitMQ-发送消息basicPublish

RabbitMQ-发送消息basicPublish

作者: AmeeLove | 来源:发表于2018-04-02 10:42 被阅读1789次

    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 都是消息传递过程中,不可达目的地是,将消息返回给生产者的功能

    相关文章

      网友评论

          本文标题:RabbitMQ-发送消息basicPublish

          本文链接:https://www.haomeiwen.com/subject/mrythftx.html