Spring integration 使用spring集成网关向不同主题发送消息
我尝试使用spring集成向代理发送mqtt消息,并且尝试使用网关接口Spring integration 使用spring集成网关向不同主题发送消息,spring-integration,spring-integration-mqtt,Spring Integration,Spring Integration Mqtt,我尝试使用spring集成向代理发送mqtt消息,并且尝试使用网关接口 @Bean public MqttPahoClientFactory mqttClientFactory() { DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory(); //set the factory details return factory: } @Bean @ServiceActivator(
@Bean
public MqttPahoClientFactory mqttClientFactory() {
DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
//set the factory details
return factory:
}
@Bean
@ServiceActivator(inputChannel = "mqttOutboundChannel")
public MessageHandler mqttOutbound() {
MqttPahoMessageHandler messageHandler =
new MqttPahoMessageHandler("randomString", mqttClientFactory());
//set handler details
messageHandler.setDefaultTopic(topic);
return messageHandler;
}
@Bean
public MessageChannel mqttOutboundChannel() {
return new DirectChannel();
}
@MessagingGateway(defaultRequestChannel = "mqttOutboundChannel")
private interface MyGateway {
void sendToMqtt(String data);
}
我的问题是:如果我想使用网关处理程序将消息发送到不同的主题,我将如何做到这一点而不必为每个主题创建适配器
谢谢
希望我的问题表述清楚,代码格式正确。您需要在消息头中设置目标主题 这里有一个方法可以做到这一点
void sendToMqtt(String data, @Header(MqttHeaders.TOPIC) String topic);
网关代理将把消息与报头组合在一起,然后由出站适配器使用。这不提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-它确实回答了这个问题,但我会补充一些词。这正是我想要的。我找到了@header(topic)注释,但我不知道如何使用它。你知道我在哪里也能找到春天的文档吗?我已经搜索了好几天了。
@Header
的用法很简单。MQTT出站通道适配器为>defaultTopic—消息发送到的默认主题(如果未找到mqtt_主题标头,则使用)。
在setDefaultTopic()
@GaryRussell的javadocs中,也请检查