public static ServiceBusMessage createServiceBusMessage(
            final Object data, final Map<String, Object> applicationProperties, final String correlationId) {
        ServiceBusMessage serviceBusMessage;
        if (data instanceof String) {
            serviceBusMessage = new ServiceBusMessage((String) data);
        } else if (data instanceof byte[]) {
            serviceBusMessage = new ServiceBusMessage((byte[]) data);
        } else if (data instanceof BinaryData) {
            serviceBusMessage = new ServiceBusMessage((BinaryData) data);
        } else {
            throw new IllegalArgumentException("Make sure your message data is in String, byte[] or BinaryData");
        }
        if (applicationProperties != null) {
            serviceBusMessage.getRawAmqpMessage().getApplicationProperties().putAll(applicationProperties);
        }
        if (ObjectHelper.isNotEmpty(correlationId)) {
            serviceBusMessage.setCorrelationId(correlationId);
        }
        return serviceBusMessage;
    }
@Test
    void testCreateServiceBusMessage() {
        // test string
        final ServiceBusMessage message1 = ServiceBusUtils.createServiceBusMessage("test string", null, null);

        assertEquals("test string", message1.getBody().toString());

        // test int
        final ServiceBusMessage message2 = ServiceBusUtils.createServiceBusMessage(String.valueOf(12345), null, null);

        assertEquals("12345", message2.getBody().toString());

        //test bytes
        byte[] testByteBody = "test string".getBytes(StandardCharsets.UTF_8);
        final ServiceBusMessage message3 = ServiceBusUtils.createServiceBusMessage(testByteBody, null, null);
        assertArrayEquals(testByteBody, message3.getBody().toBytes());
    }