Получить раздел тела сообщения rabbitmq - PullRequest
0 голосов
/ 01 ноября 2018

Я установил простой слушатель для кролика MQ

@RabbitListener(queues = SECOND_QUEUE)
    public void onMessage(Message message) {
     LOGGER.info("second queue listener.........");
     LOGGER.info(message.toString());
    }

и это дает сообщение этого формата

 (Body:'1460' MessageProperties [headers={}, timestamp=null, messageId=null, userId=null, receivedUserId=null, appId=null, clusterId=null, type=null, correlationId=null, correlationIdString=null, replyTo=null, contentType=application/x-java-serialized-object, contentEncoding=null, contentLength=0, deliveryMode=null, receivedDeliveryMode=PERSISTENT, expiration=null, priority=0, redelivered=false, receivedExchange=, receivedRoutingKey=bottomlesspit, receivedDelay=null, deliveryTag=1, messageCount=0, consumerTag=amq.ctag-PpEjG_BokAg-A4wllCgeqA, consumerQueue=bottomlesspit])

на консоли.

Я также заинтересован в обработке сообщения на стороне клиента, и у меня есть это

var onConnect = function() {
   client.subscribe("/topic/messages", function(d) {
   var str = d.body
   var res = str.match(/Body:\'(.+)\'/);
   console.log("I control this",res[1]);
   });
 };

Я просто хочу получить тело в Java, так как это единственная часть, которая меня интересует на данный момент.

Существует ли функция, которая уже была реализована в java и в stomp для получения только раздела body?.

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Вы можете получить свои данные так:

@Override
    public void onMessage(Message message, byte[] pattern) {
        yourmap.put("data", message);
        send();
    }

Тогда

String s = yourmap.get("data").toString();

Вы можете получить опубликованные данные из потока.

Надеюсь, это поможет.

0 голосов
/ 01 ноября 2018

message.getBody() - это то, что вам нужно - он вернет byte[], который вам нужно конвертировать, зная формат сообщения, который вы используете:

@RabbitListener(queues = SECOND_QUEUE)
public void onMessage(Message message) {
    byte[] body = message.getBody();
    // do what you need with the body
}
0 голосов
/ 01 ноября 2018

Согласно предложению @syntagma, это сработало для меня

@RabbitListener(queues = SECOND_QUEUE)
public void onMessage(Message message) {
 LOGGER.info("second queue listener.........");
 //LOGGER.info(message.toString());
 byte[] body = message.getBody();
LOGGER.info("This was the output from the listener "+new String(body));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...