/*
 * Copyright (c) 2018-2019 The original author or authors
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Apache License v2.0 which accompanies this distribution.
 *
 *        The Eclipse Public License is available at
 *        http://www.eclipse.org/legal/epl-v10.html
 *
 *        The Apache License v2.0 is available at
 *        http://www.opensource.org/licenses/apache2.0.php
 *
 * You may elect to redistribute this code under either of these licenses.
 */
package io.vertx.amqp;

import io.vertx.amqp.impl.AmqpMessageBuilderImpl;
import io.vertx.codegen.annotations.GenIgnore;
import io.vertx.codegen.annotations.VertxGen;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.UUID;

Builder to create a new AmqpMessage.

Reference about the different metadata can be found on AMQP message properties.

Note that the body is set using withBodyAs* method depending on the passed type.

/** * Builder to create a new {@link AmqpMessage}. * <p> * Reference about the different metadata can be found on * <a href="http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-messaging-v1.0.html#type-properties">AMQP message properties</a>. * <p> * Note that the body is set using {@code withBodyAs*} method depending on the passed type. */
@VertxGen public interface AmqpMessageBuilder {
Returns:a new instance of AmqpMessageBuilder
/** * @return a new instance of {@link AmqpMessageBuilder} */
static AmqpMessageBuilder create() { return new AmqpMessageBuilderImpl(); }
Returns:the message.
/** * @return the message. */
AmqpMessage build(); // Headers AmqpMessageBuilder priority(short priority); AmqpMessageBuilder durable(boolean durable); AmqpMessageBuilder ttl(long ttl); AmqpMessageBuilder firstAcquirer(boolean first); AmqpMessageBuilder deliveryCount(int count); // Properties AmqpMessageBuilder id(String id); AmqpMessageBuilder address(String address); AmqpMessageBuilder replyTo(String replyTo); AmqpMessageBuilder correlationId(String correlationId); AmqpMessageBuilder withBody(String value); AmqpMessageBuilder withSymbolAsBody(String value); AmqpMessageBuilder subject(String subject); AmqpMessageBuilder contentType(String ct); AmqpMessageBuilder contentEncoding(String ct); AmqpMessageBuilder expiryTime(long expiry); AmqpMessageBuilder creationTime(long ct); AmqpMessageBuilder groupId(String gi); AmqpMessageBuilder replyToGroupId(String rt); AmqpMessageBuilder applicationProperties(JsonObject props); AmqpMessageBuilder withBooleanAsBody(boolean v); AmqpMessageBuilder withByteAsBody(byte v); AmqpMessageBuilder withShortAsBody(short v); AmqpMessageBuilder withIntegerAsBody(int v); AmqpMessageBuilder withLongAsBody(long v); AmqpMessageBuilder withFloatAsBody(float v); AmqpMessageBuilder withDoubleAsBody(double v); AmqpMessageBuilder withCharAsBody(char c); @GenIgnore(GenIgnore.PERMITTED_TYPE) AmqpMessageBuilder withInstantAsBody(Instant v); @GenIgnore(GenIgnore.PERMITTED_TYPE) AmqpMessageBuilder withUuidAsBody(UUID v); @GenIgnore AmqpMessageBuilder withListAsBody(List list); @GenIgnore AmqpMessageBuilder withMapAsBody(Map map); AmqpMessageBuilder withBufferAsBody(Buffer buffer); AmqpMessageBuilder withJsonObjectAsBody(JsonObject json); AmqpMessageBuilder withJsonArrayAsBody(JsonArray json); }