【问题标题】:JMS Producer Best Practices [closed]JMS 生产者最佳实践 [关闭]
【发布时间】: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,目前还不清楚。我的意思是从资源利用和性能的角度来看

标签: java jms


【解决方案1】:

相对而言,少做通常需要更少的资源并且速度更快,因此创建一次 JMSProducer 并重复使用它几乎肯定会比每次都创建它对您的用例“更好”。

然而,值得注意的是,对于大多数 JMS 实现,生产者是一个轻量级对象,因此缓存/重用它并不像其他对象(例如 ConnectionJMSContext)那么重要。这种“优化”可能不会产生显着的统计影响,但只有仔细测试才能明确这一点。

【讨论】:

  • 谢谢@Justin Bertram,我正在寻找像你这样的确认。赞成。
猜你喜欢
  • 2020-12-23
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2011-07-14
  • 2021-09-02
  • 2018-05-28
  • 1970-01-01
  • 2013-10-02
相关资源
最近更新 更多