获取rabbitmq消息的body段
Get the body section of rabbitmq message
我已经为 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 中的 body,因为这是我目前唯一感兴趣的部分。
是否有一个功能已经在 java 和 stomp 上实现,仅用于获取 body 部分?
根据@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));
}
您可以这样获取数据:
@Override
public void onMessage(Message message, byte[] pattern) {
yourmap.put("data", message);
send();
}
然后,
String s = yourmap.get("data").toString();
您可以从流中获取发布的数据。
希望对您有所帮助。
message.getBody()
是您所需要的 - 它将 return byte[]
,您需要在知道您正在使用的消息格式的情况下进行转换:
@RabbitListener(queues = SECOND_QUEUE)
public void onMessage(Message message) {
byte[] body = message.getBody();
// do what you need with the body
}
我已经为 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 中的 body,因为这是我目前唯一感兴趣的部分。
是否有一个功能已经在 java 和 stomp 上实现,仅用于获取 body 部分?
根据@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));
}
您可以这样获取数据:
@Override
public void onMessage(Message message, byte[] pattern) {
yourmap.put("data", message);
send();
}
然后,
String s = yourmap.get("data").toString();
您可以从流中获取发布的数据。
希望对您有所帮助。
message.getBody()
是您所需要的 - 它将 return byte[]
,您需要在知道您正在使用的消息格式的情况下进行转换:
@RabbitListener(queues = SECOND_QUEUE)
public void onMessage(Message message) {
byte[] body = message.getBody();
// do what you need with the body
}