来自 Camel XMPP 的消息未通过 Openfire 到达 Pidgin

Posted

技术标签:

【中文标题】来自 Camel XMPP 的消息未通过 Openfire 到达 Pidgin【英文标题】:Messages from Camel XMPP not arriving in Pidgin via Openfire 【发布时间】:2015-02-27 15:51:19 【问题描述】:

我有骆驼路线发送到带有 uri 的生产者模板:

xmpp://user1@127.0.0.1:5225/user2@127.0.0.1?password=password

127.0.0.1:5225 的服务器正在运行安装了监控插件的 openfire。 user1 和 user2 都在服务器上设置。

我有一个 pidgin 客户端在 user2 上登录。

如果我将 uri 更改为发送到房间并使用 pidgin 客户端查看该房间,则消息会按预期显示。但是,因为它没有收到任何消息。使用监控插件,显示消息在openfire中存档,参与者为user1@127.0.0.1user1@127.0.0.1/Camel

任何想法为什么 Camel 似乎没有发送给我设置的参与者?

更新:

使用 pidgin 客户端从 'user1@127.0.0.1' 发送到 'user2@127.0.0.1' 和反之亦然的消息有效。 在 Pidgin 上以 'user1@127.0.0.1' 的身份登录时以 'user1@127.0.0.1' 的身份运行骆驼意味着我收到了消息。

【问题讨论】:

使用participant URL 选项代替参与者 URL 组件是否有效?您的用户 JID 是 user1@127.0.0.1user2@127.0.0.1 不,我也试过了。我也试过创建端点并明确设置参与者。是的,这些是 JID 【参考方案1】:

原来我是使用以下方法发送的:

producer.sendBodyAndHeaders(msg, exchange.getIn().getHeaders());

交换标头包含一个 XMPPConstants.To 标头,该标头覆盖了 uri 中的参与者字段。

【讨论】:

以上是关于来自 Camel XMPP 的消息未通过 Openfire 到达 Pidgin的主要内容,如果未能解决你的问题,请参考以下文章

在 XMPP 中返回的已发送消息

如何将来自外部系统的所有传入消息保存在 Camel 中

我可以通过 Firebase Admin SDK 接收来自设备的上游消息,而无需在应用程序服务器上实现 XMPP

在ios应用程序中实现xmpp聊天时,它没有收到来自另一端的消息而消息发送成功?

Apache Camel - 连接到 Gtalk

通过 XMPP 从 myapplication 推送消息