Class AmqpMessageBody

java.lang.Object
com.azure.core.amqp.models.AmqpMessageBody

public final class AmqpMessageBody extends Object
This class encapsulates the body of a message. The AmqpMessageBodyType map to an AMQP specification message body types. Current implementation support DATA AMQP data type.

Client should test for AmqpMessageBodyType before calling corresponding get method. Get methods not corresponding to the type of the body throws exception.

How to check for AmqpMessageBodyType

 Object amqpValue;
 AmqpMessageBodyType bodyType = amqpAnnotatedMessage.getBody().getBodyType();

 switch (bodyType) {
     case DATA:
         byte[] payload = amqpAnnotatedMessage.getBody().getFirstData();
         System.out.println(new String(payload));
         break;
     case SEQUENCE:
         List<Object> sequenceData = amqpAnnotatedMessage.getBody().getSequence();
         sequenceData.forEach(System.out::println);
         break;
     case VALUE:
         amqpValue = amqpAnnotatedMessage.getBody().getValue();
         System.out.println(amqpValue);
         break;
     default:
         throw new RuntimeException(String.format(Locale.US, "Body type [%s] is not valid.", bodyType));
 }
 
See Also:
  • Method Details

    • fromData

      public static AmqpMessageBody fromData(byte[] data)
      Creates instance of AmqpMessageBody with given byte array.
      Parameters:
      data - used to create another instance of AmqpMessageBody.
      Returns:
      AmqpMessageBody Newly created instance.
      Throws:
      NullPointerException - if data is null.
    • fromSequence

      public static AmqpMessageBody fromSequence(List<Object> sequence)
      Creates an instance of AmqpMessageBody with the given sequence. It supports only one sequence at present.
      Parameters:
      sequence - used to create an instance of AmqpMessageBody. A sequence can be List of objects. The object can be any of the AMQP supported primitive data type.
      Returns:
      newly created instance of AmqpMessageBody.
      Throws:
      NullPointerException - if sequence is null.
      See Also:
    • fromValue

      public static AmqpMessageBody fromValue(Object value)
      Creates an instance of AmqpMessageBody with the given value. A value can be any of the AMQP supported primitive data type.
      Parameters:
      value - used to create an instance of AmqpMessageBody.
      Returns:
      newly created instance of AmqpMessageBody.
      Throws:
      NullPointerException - if value is null.
      See Also:
    • getBodyType

      public AmqpMessageBodyType getBodyType()
      Gets the AmqpMessageBodyType of the message.

      How to check for AmqpMessageBodyType

       Object amqpValue;
       AmqpMessageBodyType bodyType = amqpAnnotatedMessage.getBody().getBodyType();
      
       switch (bodyType) {
           case DATA:
               byte[] payload = amqpAnnotatedMessage.getBody().getFirstData();
               System.out.println(new String(payload));
               break;
           case SEQUENCE:
               List<Object> sequenceData = amqpAnnotatedMessage.getBody().getSequence();
               sequenceData.forEach(System.out::println);
               break;
           case VALUE:
               amqpValue = amqpAnnotatedMessage.getBody().getValue();
               System.out.println(amqpValue);
               break;
           default:
               throw new RuntimeException(String.format(Locale.US, "Body type [%s] is not valid.", bodyType));
       }
       
      Returns:
      AmqpBodyType type of the message.
    • getData

      public IterableStream<byte[]> getData()
      Gets an IterableStream of byte array containing only first byte array set on this AmqpMessageBody. This library only support one byte array at present, so the returned list will have only one element.

      Client should test for AmqpMessageBodyType before calling corresponding get method. Get methods not corresponding to the type of the body throws exception.

      How to check for AmqpMessageBodyType

       Object amqpValue;
       AmqpMessageBodyType bodyType = amqpAnnotatedMessage.getBody().getBodyType();
      
       switch (bodyType) {
           case DATA:
               byte[] payload = amqpAnnotatedMessage.getBody().getFirstData();
               System.out.println(new String(payload));
               break;
           case SEQUENCE:
               List<Object> sequenceData = amqpAnnotatedMessage.getBody().getSequence();
               sequenceData.forEach(System.out::println);
               break;
           case VALUE:
               amqpValue = amqpAnnotatedMessage.getBody().getValue();
               System.out.println(amqpValue);
               break;
           default:
               throw new RuntimeException(String.format(Locale.US, "Body type [%s] is not valid.", bodyType));
       }
       
      Returns:
      data set on AmqpMessageBody.
      Throws:
      IllegalArgumentException - If AmqpMessageBodyType is not DATA.
    • getFirstData

      public byte[] getFirstData()
      Gets first byte array set on this AmqpMessageBody. This library only support one byte array on Amqp Message at present.

      Client should test for AmqpMessageBodyType before calling corresponding get method. Get methods not corresponding to the type of the body throws exception.

      How to check for AmqpMessageBodyType

       Object amqpValue;
       AmqpMessageBodyType bodyType = amqpAnnotatedMessage.getBody().getBodyType();
      
       switch (bodyType) {
           case DATA:
               byte[] payload = amqpAnnotatedMessage.getBody().getFirstData();
               System.out.println(new String(payload));
               break;
           case SEQUENCE:
               List<Object> sequenceData = amqpAnnotatedMessage.getBody().getSequence();
               sequenceData.forEach(System.out::println);
               break;
           case VALUE:
               amqpValue = amqpAnnotatedMessage.getBody().getValue();
               System.out.println(amqpValue);
               break;
           default:
               throw new RuntimeException(String.format(Locale.US, "Body type [%s] is not valid.", bodyType));
       }
       
      Returns:
      data set on AmqpMessageBody.
      Throws:
      IllegalArgumentException - If AmqpMessageBodyType is not DATA.
      See Also:
    • getSequence

      public List<Object> getSequence()
      Gets the unmodifiable AMQP Sequence set on this AmqpMessageBody. It support only one sequence at present.

      Client should test for AmqpMessageBodyType before calling corresponding get method. Get methods not corresponding to the type of the body throws exception.

      How to check for AmqpMessageBodyType

       Object amqpValue;
       AmqpMessageBodyType bodyType = amqpAnnotatedMessage.getBody().getBodyType();
      
       switch (bodyType) {
           case DATA:
               byte[] payload = amqpAnnotatedMessage.getBody().getFirstData();
               System.out.println(new String(payload));
               break;
           case SEQUENCE:
               List<Object> sequenceData = amqpAnnotatedMessage.getBody().getSequence();
               sequenceData.forEach(System.out::println);
               break;
           case VALUE:
               amqpValue = amqpAnnotatedMessage.getBody().getValue();
               System.out.println(amqpValue);
               break;
           default:
               throw new RuntimeException(String.format(Locale.US, "Body type [%s] is not valid.", bodyType));
       }
       
      Returns:
      sequence of this AmqpMessageBody instance.
      Throws:
      IllegalArgumentException - If AmqpMessageBodyType is not SEQUENCE.
      See Also:
    • getValue

      public Object getValue()
      Gets the AMQP value set on this AmqpMessageBody instance. It can be any of the primitive AMQP data type.

      Client should test for AmqpMessageBodyType before calling corresponding get method. The 'Get' methods not corresponding to the type of the body throws exception.

      How to check for AmqpMessageBodyType

       Object amqpValue;
       AmqpMessageBodyType bodyType = amqpAnnotatedMessage.getBody().getBodyType();
      
       switch (bodyType) {
           case DATA:
               byte[] payload = amqpAnnotatedMessage.getBody().getFirstData();
               System.out.println(new String(payload));
               break;
           case SEQUENCE:
               List<Object> sequenceData = amqpAnnotatedMessage.getBody().getSequence();
               sequenceData.forEach(System.out::println);
               break;
           case VALUE:
               amqpValue = amqpAnnotatedMessage.getBody().getValue();
               System.out.println(amqpValue);
               break;
           default:
               throw new RuntimeException(String.format(Locale.US, "Body type [%s] is not valid.", bodyType));
       }
       
      Returns:
      value of this AmqpMessageBody instance.
      Throws:
      IllegalArgumentException - If AmqpMessageBodyType is not VALUE.
      See Also: