策略一个
问题描述:
现状合并Java应用程序:2个两者连接到远程服务和发送一些数据有java小应用程序(第一应用程序监听本地套接字,处理数据,将其发送用于验证远程服务和过程响应;第二个应用程序在预定时间开始,为数据库处理一些数据并将数据发送到远程服务)。问题是远程服务只允许一个连接(该连接是SMPP会话),这意味着如果一个应用程序正在运行并且其他应用程序启动并尽量使连接,那么不好的事情会发生......策略一个
的想法是结合在1 2个应用程序(也许还有其他的解决方法吗?),并创建某种控制工作流功能,其职责是管理AP避免连接远程服务时发生冲突。 有人可以给我关于这个想法的任何建议吗?也许有某种设计模式可以让我避免一些陷阱,当我将要实现时? (如果有一些开源应用程序管理类似的问题,那么我可以浏览源代码并收集一些好的信息会更好)。
谢谢。
答
裹数据类连同必要的元数据。
将您的应用程序分开线程和而不是发送数据将它们添加到队列。
然后,在另一个线程中,读取该队列并将数据从队列发送到服务。
我给一个尝试的BlockingQueue(http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/BlockingQueue.html)。
答
最明显的解决办法是写将在收集请求排队,并通过一个送他们一个到远程服务的简单反向代理服务器。或者代理可以为每个请求运行新的服务实例。 http://en.wikipedia.org/wiki/Reverse_proxy
为什么不可能每次都请求后连接? – 2011-05-16 08:57:33
应用程序B需要从db中获取数据并发送(例如)15 sms到smpp服务器,这是否意味着我们需要打开关闭会话15次才能发送这些消息? – artjomka 2011-05-16 09:07:21
我binary_runner同意 - 使用队列中积累的消息,并在固定的时间速度给他们,这是异步交互通常设计百通... – 2011-05-17 15:36:38