获取rabbitmq消息的正文部分

我已经为 rabbit 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 中实现,仅用于获取正文部分?。


翻翻过去那场雪
浏览 405回答 3
3回答

明月笑刀无情

message.getBody()是您所需要的 - 它将返回byte[],您需要在知道您正在使用的消息格式的情况下对其进行转换:@RabbitListener(queues = SECOND_QUEUE)public void onMessage(Message message) {    byte[] body = message.getBody();    // do what you need with the body}

千巷猫影

您可以像这样获取数据:@Override    public void onMessage(Message message, byte[] pattern) {        yourmap.put("data", message);        send();    }然后,String s = yourmap.get("data").toString();您可以从流中获取已发布的数据。我希望这将有所帮助。

BIG阳

这对我有用@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));}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java