gpt4 book ai didi

java - XMPP Client(带smack)和ActiveMQ,如何拦截 "adminConsole"消息

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:35 25 4
gpt4 key购买 nike

我制作了一个非常简单的java应用程序(它只是一个证明),并且可以毫无问题地连接到我的ActiveMQ消息布鲁克(安装在我用来测试我的java应用程序的同一台机器上)。问题是我无法拦截任何消息。我在我的应用程序中设置了一个 messageListener,如下所示,但我不确定它是否位于正确的位置,也不确定拦截消息的正确方法(例如,使用 ActiveMQ 管理控制台中可用的“发送到”选项发送的消息,如本文下半部分的链接所述)。这是消息监听器的代码:

/*................previous code is not relevant.................*/
ConnectionConfiguration config = new ConnectionConfiguration("192.168.43.5",61222); //to get my XMPP connector uri
String msg="";
config.setSASLAuthenticationEnabled(false);
config.setCompressionEnabled(false);
XMPPConnection xmpp = new XMPPConnection(config);

try {

xmpp.connect();
xmpp.login("name", "pw");
/*Filter*/
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
/*MessageListener to get messages*/
MessageListener listen = new MessageListener() {
@Override
public void processMessage(Chat arg0, Message arg1) {
// TODO Auto-generated method stub
msg = "ok ";
msg = arg1.toString();
}
};
/*New chat with my messageListener*/
Chat c = xmpp.getChatManager().createChat("admin", listen) ;
c.sendMessage("enter text here");
}
catch (XMPPException e) {
}
/*...............other code.......................*/

这或多或少是我想要做的,使用我的java应用程序而不是spark(我已经能够使用spark做到这一点)。 ActiveMQ with XMPP

感谢所有愿意帮助我的人!

最佳答案

我不知道 ActiveMQ 在 XMPP 方面如何工作,但 ActiveMQ 很可能不会根据您创建的同一聊天向您发送消息。聊天是使用线程 ID 进行协调的,如果 MQ 使用不同的线程 ID 发送,或者根本没有发送,它可能与您创建的聊天不匹配,因此不会调用您的监听器

尝试adding a listener to the ChatManager ,以获得新传入聊天的通知,并尝试使用 -Dsmack.debugEnabled=true 运行,以确保您确实收到来自 ActiveMQ 的数据包。

顺便说一句,您的 PacketFilter 在此场景中不使用,当您直接在连接上放置监听器时使用。

关于java - XMPP Client(带smack)和ActiveMQ,如何拦截 "adminConsole"消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com