我有一个应用程序,每天处理数十万(500,000+)个JMS请求。应用程序负责根据请求中收到的信息将消息路由到新目的地。
处理请求时,我还需要能够修改一些JMS属性。例如,我需要设置持久性,生存时间和消息的优先级。因此,我的侦听器接收消息,询问请求消息,确定目标,然后在JMS模板上设置这些属性。
我的问题是关于并发性和这些属性的设置。让我们说我正在处理2个并发请求。请求A将持久性设置为持久性,并且请求B将持久性设置为非持久性。她的请求A会被设置为非持久性吗?可以在模板级别设置这些属性会导致问题吗?
以下是一些设置这些属性的示例代码:
jmsTemplate.setExplicitQosEnabled(true);
jmsTemplate.setDeliveryPersistent(isPersistent);
jmsTemplate.setTimeToLive(timeToLive);
jmsTemplate.setPriority(priority);
jmsTemplate.send(createQueue(encoding));
先谢谢你的帮助!
答案 0 :(得分:0)
Yes; it will cause issues; Spring Integration uses a DynamicJmsTemplate
for this exact reason (storing properties in ThreadLocal
s).
It doesn't support all the properties you need but you could use it as a model.