要求是通过JMS(最有可能是ActiveMQ)从Tomcat发送网站访问者生成的表单数据。有两个相互竞争的想法 - 一个将利用中间存储和一个线程池发送到队列(如果由于某种原因发布到JMS失败,则尝试重新发送),另一个是尝试直接通过JMS从JMS发送有效负载处理访问者的线程'发布请求 - 如果由于某种原因JMS发布失败,则请求失败。
第二种选择对我来说似乎更好,因为我认为在消息队列前添加中间存储是一种过度的做法 - 消息队列本身应该是中间存储。听起来不错吗?
答案 0 :(得分:0)
什么?等待 - MQ Broker是一个中间(持久)存储,用于处理接收方的可以处理重新发送的停机时间。尽管如此,你还是有点对。您不希望因为您的(远程)代理已关闭而错过该订单。解决该问题的弹性解决方案是设置本地(可能是嵌入式)ActiveMQ代理,然后建立与远程代理的“代理网络”连接。您可以确定本地代理与您的Web应用程序一起运行,并且它将处理远程代理的重新传输,如果它暂时处于脱机状态。
但是,我会建议不要实现一个简单的内存缓冲区来保存数据,直到它可以发布到代理。让我们看一个场景(我只是在构成表单的目的):