【发布时间】:2016-10-02 11:57:06
【问题描述】:
以下是我的spring xmpp集成配置中的sn-p,
<context:property-placeholder location="classpath:xmpp.properties"/>
<int-xmpp:inbound-channel-adapter auto-startup="true"
payload-expression="getExtension('google:mobile:data').json"
channel="xmppChannel"
xmpp-connection="xmppConnection" />
<int:service-activator ref="xmppMessageConsumer"
input-channel="xmppChannel"/>
<int:logging-channel-adapter id="xmppChannel" log-full-message="true"
/>
这是我的服务激活器定义
import org.apache.log4j.Logger;
import org.springframework.messaging.Message;
import org.springframework.integration.annotation.ServiceActivator;
import org.springframework.stereotype.Component;
@Component
public class XmppMessageConsumer {
private final List<String> xmppMessages;
private static final Logger LOGGER = Logger.getLogger(XmppMessageConsumer.class);
public XmppMessageConsumer() {
// TODO Auto-generated constructor stub
xmppMessages=new ArrayList<String>();
}
@ServiceActivator
public void consume(Message<?> input) throws Throwable {
String text = (String)input.getPayload();
xmppMessages.add(text);
LOGGER.info(text);
}
从日志中我可以看到频道收到的消息,但是服务激活器功能没有被调用。
10:48:59 PM RECV (0): <message to="588523657007@gcm.googleapis.com" from="devices@gcm.googleapis.com" type="normal"><gcm xmlns="google:mobile:data">{"data":{"Hello":"How are you"},"time_to_live":0,"from":"dqWxVXwH7HU:APA91bFco6xelMctjv5nMgeAIiZtH7TCCMX5a6UZ-ae2yNkBxLh-zVqy32gm6bd1IC3pyKCEwnYOFiBn4au-4XvPn8TzTvikGUNfeQ_1RN_TMk-9dyJ2WtJXVr7RCn0AGynToTWCZ7oC","message_id":"1Id","category":"com.google.firebase.quickstart.fcm"}</gcm></message>
我的假设是通过定义有效载荷表达式,消息解析由框架负责。如果我错了,请纠正我。
【问题讨论】:
标签: spring spring-mvc google-cloud-messaging spring-integration