Java 关于此用例的架构/设计的一些问题?
我的应用程序需要作为中间件工作,它可以从不同的应用程序获取订单(以xml的形式) 包含供应商id的客户。一旦收到订单,它需要发送订单请求 以xml的形式发送给不同的供应商。我对它的三个方面持双重观点。这是:- 问题:Java 关于此用例的架构/设计的一些问题?,java,architecture,jms,Java,Architecture,Jms,我的应用程序需要作为中间件工作,它可以从不同的应用程序获取订单(以xml的形式) 包含供应商id的客户。一旦收到订单,它需要发送订单请求 以xml的形式发送给不同的供应商。我对它的三个方面持双重观点。这是:- 问题: 我在高层计划的是,一旦请求到来,就把它放到jms队列中(现在我不确定) 我应该为每个供应商创建队列还是一个队列就足够了。我认为一个队列就足够了。 因为维护大量队列会增加开销。)。每个供应商保持单独队列的优点是,消息可以更快地处理,因为每个队列上将有单独的生产者 在将对象放入队列之前
我预计每小时有50k个请求,这意味着每秒大约有15个请求因为您是中间件,所以您应该在联系点快速处理数据,以便腾出双手处理更多的传入请求。因此,您必须找到一种方法,以尽可能快的速度和低的内存分离传入数据。将数据处理留给针对问题更具体的模块。接待员只是把客人引导到正确的地点 如果您以后真的需要阅读和理解专业工作者中接收到的数据,请使用线程池。通过这种方式,您可以并行处理数据,而不用太担心outofmem。只需巧妙地选择您的池大小,并只使用一个。您可以使用侦听器模式向工作者multiton发送新传入数据的信号。如果可能的话,您应该避免jaxb或更好地完成数据的反序列化。它像地狱一样吞噬记忆 我不会使用jmx,因为您的“消息”只与一个侦听器相关
如果可能的话,在工人完成工作后尽快发送邮件。如果没有,请使用存储器。通过这种方式,您可以在以后验证您是否处理了数据,如果出现问题或您必须更新软件,您就不必担心不稳定的数据。您的基本要求是
收到订单后立即发送有问题吗?在特定时间避免重载对您和供应商都有好处。您没有提供,负载是多少。metrics@Mani如果在最短时间(4:59小时)内提供load metricSo,您将排除队列中的25000个对象。发送回供应商时是否需要修改XMl格式。因此,在这种情况下,没有必要将其存储在XML中。除非中间层与供应商之间没有合同,否则每个供应商可以使用不同的格式supplier@Mani你是对的,我需要修改xml的格式,然后发送回供应商。Mani我根据你最后的评论编辑了我的第二点。问得好。你能和我一起快速聊天吗?让我试试。会给它一个简短的聊天。你在聊天中收到我的留言了吗?你在吗?我加入了聊天室你有skyp吗