2015-05-05 48 views
1

我试图通过Spring MQTT客户端阅读订阅的主题消息。Spring MQTT订阅者配置

<mqtt:message-driven-channel-adapter id="mqttInbound" 
    client-id="mySpringServer" 
    url="tcp://localhost:1883" 
    topics="foo2015" 
    auto-startup="true" 
    client-factory="clientFactory" 
    channel="fileChannel"/> 

比具有 “fileChannel” 信道相反,我喜欢通过Spring MQTT客户端来处理它们。 例如:MqttPahoMessageDrivenChannelAdapter

我可以使用MqttPahoMessageDrivenChannelAdapter作为一个bean,并参照 “mqttInbound”?

所有传入“mqttInbound”的消息都会重定向到MqttPahoMessageDrivenChannelAdapter。我可以这样做吗?

更新: 我可以将传入消息重定向到bean吗?有没有我可以使用的界面?

例如:

<mqtt:message-driven-channel-adapter ... channel="msgChannel" /> 
<bean id="msgChannel" class="org.channel.AnyMessageReader"/> 

我看到下面的例子,但我不知道究竟这就是我要找的。

<int:channel id="channel_01" /> 
<int:service-activator id="serviceActivator" input-channel="channel_01" ref="msgService" method="setMessage" /> 
<bean id="msgService" class="org.channel.AnyMessageService"/> 

回答

1

对不起,或者你误解了Spring Integration,或者我错过了你的任何问题。

<mqtt:message-driven-channel-adapter>是用于MqttPahoMessageDrivenChannelAdapter的高级别组件:

  1. MqttNamespaceHandler

    this.registerBeanDefinitionParser("message-driven-channel-adapter", new MqttMessageDrivenChannelAdapterParser()); 
    
  2. MqttMessageDrivenChannelAdapterParser

     BeanDefinitionBuilder builder = BeanDefinitionBuilder 
           .genericBeanDefinition(MqttPahoMessageDrivenChannelAdapter.class); 
    

那么,将MqttPahoMessageDrivenChannelAdapter换成MqttPahoMessageDrivenChannelAdapter有什么意义?

你有一些扩展吗?因此,您必须声明自定义的常规<bean>,但MessageProduceroutputChannel仍然是必需的。

+0

我刚刚更新了这个问题。我想我在这里不知道。我检查了春季文档,但没有结果。我想我应该首先了解一下Spring-JMS的一些背景知识。 – user2172625