2017-09-20 1 views
2

J'essaie d'insérer l'en-tête du message dans amq. Il n'y a pas de méthode spécifique dans JMSTemplate pour définir l'en-tête dans amq. quand je mets comme ceci il va enregistrer dans StringProperty au lieu de l'en-tête. Pour enregistrer dans l'en-tête comment transmettre des donnéesComment envoyer un message d'en-tête dans JmsTemplate?

amqTemplate.convertAndSend(goMQ, message,new MessagePostProcessor() { 
     @Override 
     public Message postProcessMessage(Message message) throws JMSException { 
      message.setStringProperty("test1","testdata"); 
      message.setStringProperty("country","US"); 
      //setObjectProperty -- also set the string property 
      return message; 
     } 
    }); 

Je dois envoyer les données dans l'en-tête et le client implémentera le sélecteur pour mon en-tête de message.

Répondre

0

Vous le faites correctement en définissant la propriété de chaîne. Maintenant, votre client devrait être en mesure de recevoir un message basé sur le sélecteur de message.

Par exemple, dans jms, le client obtiendra un message que pour le pays « US » avec les paramètres suivants:

  <activation-config> 
       <activation-config-property> 
        <activation-config-property-name>destinationType</activation-config-property-name> 
        <activation-config-property-value>javax.jms.Queue</activation-config-property-value> 
       </activation-config-property> 
       <activation-config-property> 
        <activation-config-property-name>destinationJNDIName</activation-config-property-name> 
        <activation-config-property-value>jms/queueName</activation-config-property-value> 
       </activation-config-property> 
       <activation-config-property> 
        <activation-config-property-name>messageSelector</activation-config-property-name> 
        <activation-config-property-value>country='US'</activation-config-property-value> 
       </activation-config-property> 
      </activation-config> 
+0

Oui c'est mais ma question est .. quand je apache Camel et font comme ça exchange.getIn() .setHeader ("Pays", "US"); - Il sera défini dans l'en-tête mais lorsque j'utilise celui ci-dessus - message.setStringProperty ("Country", "US"); dans JMStemplate Il sera défini dans StringProperty. J'ai besoin d'un en-tête de message de JMSTemplate. – sudar