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 实现,生产者是一个轻量级对象,因此缓存/重用它并不像其他对象(例如 ConnectionJMSContext)那么重要。这种“优化”可能不会产生显着的统计影响,但只有仔细测试才能明确这一点。

【讨论】:

谢谢@Justin Bertram,我正在寻找像你这样的确认。赞成。

以上是关于JMS 生产者最佳实践 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring JMS 进行错误处理的最佳实践

聊聊 Kafka:Kafka 消息重复的场景以及最佳实践

聊聊 Kafka:Kafka 消息重复的场景以及最佳实践

生产环境中的 Elasticsearch 配置和最佳实践

rocketmq最佳实践

将 ReactJS 构建/编译/部署到生产环境的最佳方法 [关闭]