• 发送消息
    • #自定义消息属性">#自定义消息属性
    • #发送带有 headers 的消息">#发送带有 headers 的消息
    • #发送过期(expiration)消息">#发送过期(expiration)消息
    • #完整参数说明">#完整参数说明

    发送消息

    可以使用如下方式发送消息

    1. channel.basicPublish(exchangeName, routingKey, null, "Hello World".getBytes());
    2. Copied!

    1

    为了更好的控制发送,可以使用 mandatory 参数,或则发送一些特定属性的信息:

    1. channel.basicPublish(exchangeName, routingKey, mandatory, MessageProperties.PERSISTENT_TEXT_PLAIN, messageBodyBytes);
    2. Copied!

    1

    PERSISTENT_TEXT_PLAIN:消息投递模式(delivery mode = 2),消息会被持久化。同时消息的优先级(priority) 设置为 1。 content-type = “text/.plain”

    #自定义消息属性

    1. channel.basicPublish(exchangeName, routingKey,
    2. new AMQP.BasicProperties.Builder()
    3. .contentType("text/plain")
    4. .deliveryMode(2)
    5. .priority(1)
    6. .userId("hidden")
    7. .build(),
    8. messageBodyBytes
    9. );
    10. Copied!

    1
    2
    3
    4
    5
    6
    7
    8
    9

    #发送带有 headers 的消息

    1. final HashMap<String, Object> headers = new HashMap<>();
    2. headers.put("localtion", "here");
    3. headers.put("time", "today");
    4. channel.basicPublish(exchangeName, routingKey,
    5. new AMQP.BasicProperties.Builder()
    6. .headers(headers)
    7. .build(),
    8. messageBodyBytes
    9. );
    10. Copied!

    1
    2
    3
    4
    5
    6
    7
    8
    9

    #发送过期(expiration)消息

    1. channel.basicPublish(exchangeName, routingKey,
    2. new AMQP.BasicProperties.Builder()
    3. .expiration("60000")
    4. .build(),
    5. messageBodyBytes
    6. );
    7. Copied!

    1
    2
    3
    4
    5
    6

    #完整参数说明

    上面是几个常用的消息发送,他们都有一个完整参数的方法

    1. void basicPublish(String exchange, String routingKey, boolean mandatory, BasicProperties props, byte[] body)
    2. throws IOException;
    3. Copied!

    1
    2

    • exchange:交换器名称,如果为空,则会发送到 RabbitMQ 默认的交换器中
    • routingKey:路由键
    • mandatory:该内容请参阅下一章
    • props:消息的基本属性集,有如下 14 个属性成员
      • contentType
      • contentEncoding
      • headers(Map)
      • deliveryMode
      • priority
      • correlationId
      • replyTo
      • expiration
      • messageId
      • timestamp
      • type
      • userId
    • body:消息体(payload)