我正在使用Babbler编写XMPP软客户端来进行负载测试。
在API文档Babbler documentation中,它提到了添加侦听器以拦截传入的消息。但是,示例代码是以lambda形式编写的。
// Listen for messages
xmppClient.addInboundMessageListener(e -> {
Message message = e.getMessage();
// Handle inbound message.
});
由于我们的负载生成工具(nGrinder)不支持lambda语法,因此需要将其转换为Java 1.7函数的帮助。
最佳答案
// Listen for messages
xmppClient.addInboundMessageListener(new Consumer<MessageEvent>() {
public void accept(MessageEvent e) {
Message message = e.getMessage();
// Handle inbound message.
}
});
您还可以避免每次调用某个lambda函数时都将其存储在实例变量中来创建新的Consumer实例。
private Consumer<MessageEvent> inboundMessageListener;
//should be called during startup only
public void initialize() {
inboundMessageListener = new Consumer<MessageEvent>() {
public void accept(MessageEvent e) {
Message message = e.getMessage();
// Handle inbound message.
}
};
}
//can be reused for more than one XMPP client, assuming there's no difference in handling different clients
public void addInboundMessageListener() {
xmppClient.addInboundMessageListener(inboundMessageListener);
}