gpt4 book ai didi

java - 使用Spring Integration下的Paho接收二进制MQTT消息

转载 作者:行者123 更新时间:2023-11-30 02:12:57 33 4
gpt4 key购买 nike

我有这段代码可以在 Spring Integration 5.0.x/Boot 2.0 下接收 MQTT 消息。它对于文本消息工作得很好,但是当我尝试处理二进制消息时,它会失败,因为发生了到 String 的转换,这会损坏内容(在本例中:png 图像文件)。

如何才能不被篡改地接收消息?

我尝试在 DefaultPahoMessageConvertersetBytesMessageMapper,但这并没有改变任何事情。当我使用 mqtt.fx 下载消息内容时,我可以证明二进制内容设置正确,因此我确信这是接收端的问题。

@Bean
public MessageProducer inbound() {
MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter("tcp://iot.eclipse.org:1883",
"foo", "bar");
adapter.setCompletionTimeout(5000);
DefaultPahoMessageConverter converter = new DefaultPahoMessageConverter();
adapter.setConverter(converter);
adapter.setQos(1);
adapter.setOutputChannel(mqttInputChannel());
return adapter;
}
...
@Bean
@ServiceActivator(inputChannel = "mqttInputChannel")
public MessageHandler handler() {
return new MessageHandler() {

@Override
public void handleMessage(Message<?> message) throws MessagingException {
System.out.println("message received on " + new Date());
Object payload = message.getPayload();
...
};
}

最佳答案

将转换器上的 payloadAsBytes 属性设置为 true...

/**
* True if the converter should not convert the message payload to a String.
* Ignored if a {@link BytesMessageMapper} is provided.
*
* @param payloadAsBytes The payloadAsBytes to set.
* @see #setBytesMessageMapper(BytesMessageMapper)
*/
public void setPayloadAsBytes(boolean payloadAsBytes) {
this.payloadAsBytes = payloadAsBytes;
}

关于java - 使用Spring Integration下的Paho接收二进制MQTT消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49562700/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com