}
log.trace("Consumed message: " + msg);
consumer.close();
StompFrame sf;
if (msg == null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter stream = new PrintWriter(new OutputStreamWriter(baos, "UTF-8"));
stream.print("No messages available");
stream.close();
HashMap eheaders = new HashMap();
eheaders.put(Stomp.Headers.Error.MESSAGE, "timeout");
sf = new StompFrame(Stomp.Responses.ERROR, eheaders, baos.toByteArray());
} else {
// Don't use sendResponse since it uses Stomp.Responses.RECEIPT as the action
// which only allows zero length message bodies, Stomp.Responses.MESSAGE is correct:
sf = session.convertMessage(msg);
}
if (headers.containsKey(Stomp.Headers.RECEIPT_REQUESTED))
sf.getHeaders().put(Stomp.Headers.Response.RECEIPT_ID, headers.get(Stomp.Headers.RECEIPT_REQUESTED));
sendToStomp(sf);
}