【问题标题】:Strategy to merge java applications in one将java应用程序合并为一个的策略
【发布时间】:2023-04-08 02:00:02
【问题描述】:

情况:2个小型java应用程序都连接到远程服务并在那里发送一些数据(第一个应用程序侦听本地套接字,处理数据,将其发送给远程服务进行验证并处理响应;第二个应用程序按预定时间启动,处理数据库的一些数据并将该数据发送到远程服务)。问题是远程服务只允许一个连接(该连接是 SMPP 会话),这意味着如果一个应用程序正在运行并且其他应用程序启动并尝试建立连接那么不好事情会发生...

这个想法是将 2 个应用程序合二为一(也许还有其他解决方案?)并创建某种控制工作流功能,其职责是管理应用程序以避免在连接到远程服务时发生冲突。 有人可以给我关于这个想法的任何建议吗?也许有某种设计模式可以让我在实现它时避免一些陷阱? (如果有一些开源应用程序可以管理类似的问题,那就更好了,这样我就可以浏览源代码并收集一些有用的信息。

谢谢。

【问题讨论】:

  • 每次请求后为什么不关闭连接?
  • 应用程序 B 需要从数据库中获取数据并发送(例如)15 条短信到 smpp 服务器,这是否意味着我们需要打开关闭会话 15 次才能发送这些消息?
  • 我同意 binary_runner - 使用队列来累积消息并以固定的时间速率发送它们,这是异步交互的常用设计模式......

标签: java architecture


【解决方案1】:

将数据与必要的元数据一起包装到类中。

将您的应用程序放置在单独的线程中并将它们添加到队列中而不是发送数据

然后,在另一个线程中,读取队列并将数据从队列发送到服务。

我会尝试 BlockingQueue (http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/BlockingQueue.html)。

【讨论】:

    【解决方案2】:

    最明显的解决方案是编写一个简单的反向代理服务器,它将请求收集到队列中,并将它们一一发送到您的远程服务。或者代理可以为每个请求运行新的服务实例。 http://en.wikipedia.org/wiki/Reverse_proxy

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 2020-02-21
      • 2018-09-08
      • 2018-08-31
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2021-01-18
      相关资源
      最近更新 更多