How to receive/handle an XMPP message send to a user running Spring Boot / Integration -


currently have runnning spring boot application logs in xmpp server specific user. can send messages remote clients etc. want receive messages on serverside if clients sending messages specific user logged in via spring boot.

i tried hookup service activator receives message message content put "to" field , "from" property null. puzzled on how hook things..

below xmpp configuration of incoming message adapter:

<!-- incoming xmpp configuration --> <int-xmpp:inbound-channel-adapter auto-startup="true" xmpp-connection="xmppconnection" channel="incomingmessageschannel"/> <channel id="incomingmessageschannel">     <interceptors>         <wire-tap channel="incomingmessageslogger"/>     </interceptors> </channel> <logging-channel-adapter id="incomingmessageslogger" logger-name="incoming logger" log-full-message="true" /> <service-activator ref="messageeventhandler" method="handle" input-channel="incomingmessageschannel"/> 

and class handles incoming messages:

import org.jivesoftware.smack.packet.message; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.stereotype.component;  @component public class messageeventhandler {      private static final logger logger = loggerfactory.getlogger(messageeventhandler.class);      public void handle(message message) {         system.out.println(message.getfrom());         system.out.println(message.getto());         system.out.println(message.getbody());     } } 

so when send message server output of:

  • system.out.println(message.getfrom()); null
  • system.out.println(message.getto()); actual message content
  • system.out.println(message.getbody()); null

what missing overhere?

solution problem use correct message implementation!

import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.beans.factory.annotation.value; import org.springframework.messaging.message; import org.springframework.messaging.messageheaders; import org.springframework.stereotype.component;  @component public class messageeventhandler {      private static final logger logger = loggerfactory.getlogger(messageeventhandler.class);      public void handle(message message) {         messageheaders headers = message.getheaders();          string = (string) headers.get("xmpp_from");         string = (string) headers.get("xmpp_to");         long timestamp = (long) headers.get("timestamp");         string payload = (string) message.getpayload();          logger.debug("received message from: {} payload: {}", from, payload);     } } 

Comments