2016-04-15 6 views
1

Also, das Problem: Ich muss einige benutzerdefinierte Wert in der Kopfzeile über Apache Camel/MQTT senden.MQTT/Camel/Benutzerdefinierte Header-Parameter

Code-Beispiel:

import java.util.Map; 

import org.apache.camel.CamelContext; 
import org.apache.camel.Message; 
import org.apache.camel.impl.DefaultCamelContext; 

public class MQTTEntryPoint { 

    private static final String BASE = "mqtt:test?host=tcp://ip_address&"; 
    private static final String SUBSCRIBER = BASE + "subscribeTopicName=test2"; 
    private static final String PUBLISHER = BASE + "publishTopicName=test2"; 

    public static void main(String[] args) { 
     CamelContext camelContext = new DefaultCamelContext(); 
     Thread thread = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       Message message = camelContext.createConsumerTemplate().receive(SUBSCRIBER).getIn(); 
       String body = message.getBody(String.class); 
       System.out.println(body); 
       Map<String, Object> headers = message.getHeaders(); 
       for (String key : headers.keySet()) { 
        System.out.println("Header key: " + key + ", Header value: " + headers.get(key)); 
       } 
      } 
     }); 
     thread.start(); 

     camelContext.createProducerTemplate().sendBodyAndHeader(PUBLISHER, "some body value", "headerKey", 
       "some header value"); 

    } 
} 

In dem System heraus, dass ich nur sehen kann:

some body value 
Header key: CamelMQTTSubscribeTopic, Header value: test2 

Wie Sie sehen können, von benutzerdefinierten Header-Wert sendet nicht funktioniert. Was ist falsch?

Antwort

0

Das MQTT-Protokoll AFAIR unterstützt nur eine einzige Nutzlast ohne zusätzliche Header.

+0

Thx für die Antwort. Dies gilt auch für die 'sendBodyAndProperty' Methode? –

+0

@AndrewSikorsky, Gibt es eine Umwandlung, die vorgenommen werden kann, um Header während einer Kamelroute einzuschließen? – Clocker