2015-07-31 8 views
1

Вопрос Часть первая При отправке сообщений с использованием rabbitMQ и Spring наиболее эффективным методом транспорта. Это String или JSON Object?Весенние сообщения RabbitMQ. Использование JSON посылает эффективно

Вопрос Часть вторая При использовании объекта JSON это самый чистый способ отправки и получения? Все это преобразование кажется неэффективным.

Отправка Код

JSONObject messageJSON = new JSONObject(); 
messageJSON.put("messageId", "testId"); 
messageJSON.put("NodeId", "testNode"); 

template.convertAndSend("TEST-EXCHANGE", 
    "routing.test", messageJSON.toJSONString() 
     .getBytes()); 

код приема

public class Listener implements MessageListener { 

    @Override 
    public void onMessage(Message message) { 
    String recmessage = new String(message.getBody()); 
    JSONObject obj = (JSONObject) JSONValue.parse(recmessage); 
    System.out 
     .println("Message Received " + (String) obj.get("messageId")); 
    } 
} 

Решение от ответа данного

Вам нужно добавить зависимость Джексона. Ниже Maven:

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.4.1</version> 
    </dependency> 

Добавить в весеннем Config

<bean id="amqpCorrectionTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate"> 
    <property name="connectionFactory" ref="connectionFactory" /> 
    <property name="messageConverter"> 
     <bean 
      class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"> 
     </bean> 
    </property> 
</bean> 

Добавить в сообщение Слушатель

Jackson2JsonMessageConverter jmc = new Jackson2JsonMessageConverter(); 
JSONObject obj = (JSONObject) jmc.fromMessage(message); 

Отправка кода только передает объект JSON прошло in.

template.convertAndSend("TEST-EXCHANGE", 
    "routing.test", messageJSON); 

ответ

0

Это неправильный вопрос: протокол AMQP (как и любой другой проводной основе) получает дело только с байтами, так что до вашего приложения, как преобразовать в byte[] и обратно (если это Java везде, конечно).

С другой стороны, было бы лучше настроить вашу конфигурацию на основе готовых преобразователей. Например, Jackson2JsonMessageConverter.

Дополнительную информацию см. В Documentation.

+0

Это решение для будущих зрителей, а также @Artem, если они наиболее эффективны. Ввод решения в вопрос. – Matt