0

RabbitMQ 和消息传递 API 的新手。我想每隔几毫秒发送三个浮点值。要初始化我的连接/通道,我有:

connection = factory.newConnection();
channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);

然后,当我想发送一条消息时,以下是字符串:

private void sendMessage(String message) throws IOException {
    channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
}

如何更改sendMessage发送float x1, float x2, float x3

在服务器端,我如何将这条消息接收/解析成 3 个浮点数?

4

1 回答 1

2

例如,您可以使用ByteBuffer

final ByteBuffer buf = ByteBuffer.allocate(12)  // 3 floats
    .putFloat(f1).putFloat(f2).putFloat(f3);    // put them; .put*() return this
channel.basicPublish(buf.array());              // send

这将以大端(默认网络顺序和 Java 使用的顺序)写入浮点数。

在接收方,你会这样做:

// delivery is a QueuingConsumer.Delivery
final ByteBuffer buf = ByteBuffer.wrap(delivery.getBody());
final float f1 = buf.getFloat();
final float f2 = buf.getFloat();
final float f3 = buf.getFloat();
于 2013-07-11T18:22:36.737 回答