JMS 生产者最佳实践 [关闭]
Posted
技术标签:
【中文标题】JMS 生产者最佳实践 [关闭]【英文标题】:JMS Producer Best Practices [closed] 【发布时间】:2021-12-31 12:09:28 【问题描述】:我想将消息发送到 servlet 顶部的过滤器中的队列。
public class Filter implements javax.servlet.Filter
@Inject
JMSContext context;
@Resource
private Queue queue;
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
long start = new Date().getTime();
filterChain.doFilter(servletRequest, servletResponse);
JMSProducer producer = context.createProducer();
...
考虑到性能和资源利用率,最好在@PostConstruct
方法中创建一次,还是没关系,我可以在每个请求中创建它?
【问题讨论】:
你所说的“更好”具体是什么意思?您是从性能角度、资源利用角度、易于编程或维护角度等角度看待这个问题吗? 对@Justin Bertram,目前还不清楚。我的意思是从资源利用和性能的角度来看 【参考方案1】:相对而言,少做通常需要更少的资源并且速度更快,因此创建一次 JMSProducer
并重复使用它几乎肯定会比每次都创建它对您的用例“更好”。
然而,值得注意的是,对于大多数 JMS 实现,生产者是一个轻量级对象,因此缓存/重用它并不像其他对象(例如 Connection
或 JMSContext
)那么重要。这种“优化”可能不会产生显着的统计影响,但只有仔细测试才能明确这一点。
【讨论】:
谢谢@Justin Bertram,我正在寻找像你这样的确认。赞成。以上是关于JMS 生产者最佳实践 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章