2017-06-23 55 views
-1

我正在寻找一个符合以下情形的Java服务器技术:邮件路由基于规则

客户端X发送消息 - >某些服务器组件决定的基础上,例如某些规则if message from client X and content equals Y, forward message to Client Z (or a group of clients)

客户端Z(或读取该消息的组中的第一个)确认消息并采取进一步的(物理)操作。

消息应该可靠地发送到客户端并记录/存储在某个地方,以便能够回溯客户端发送了什么类型的消息以及客户端是否确认了它。

有最大。 200个客户端,每小时大约200-300个消息,因此性能/吞吐量不是那么重要。

可能的技术:

  • 服务器:Java EE的(如Wildfly群)或vert.x ...
  • 客户端:Android平板电脑JavaScript的Web应用程序(网络插座可用)
  • 存储:MySQL,NoSQL,...

对我来说,看起来MQTT Broker可能适合在服务器端......您怎么看?对我来说最大的问题是如何/在哪里实现路由逻辑(if message from client X then forward to...)和日志记录/存储。

回答

2

设置基于内容的路由类型会打败MQTT所依赖的整个publisher-> broker-> subscriber模型,这让我感到震惊。我的理解是,大多数MQTT经纪人都假定处理将发生在客户端,而不是经纪人本身。我假设你可以实现它,但这将是我的(语言不可知的)建议。

  1. 客户端X内部解析该消息,如果有内容Y,将其发送到话题A.

  2. 由于客户ž知道,在主题进行的任何消息都有它想要的内容,客户端ž订阅话题A和接收内容Y.

如果该处理不被客户端X来处理,你可以做这样的事情,而不是一些绝对的要求:

  1. 客户端X发送

  2. 客户端A订阅主题X邮件主题X.和解析消息寻找Y.

  3. 如果Y被发现客户端A发布的消息主题ž 。

  4. 客户Z的订阅话题Z和接收内容Y.

这种做法是有点笨重但它适合MQTT的逻辑和结构。

+0

淫荡。这完全是我正在寻找的,有没有准备好使用实现这种消息路由逻辑的解决方案? – WeSee