【问题标题】:Can a single QueueConnection be used in multithreaded environment.?可以在多线程环境中使用单个 QueueConnection 吗?
【发布时间】:2015-10-28 23:03:48
【问题描述】:

我有一个在 IBM WAS 中配置的 IBM QM。单个 QueueConnectionQCF 创建并加载到内存中,以便多个线程可以访问同一个连接(每个线程将在此连接中创建一个会话)来发送和接收来自队列的消息. 这种方法存在性能问题。

  1. 当第一个线程正在使用连接时,其他线程会等待吗 直到第一次发送和接收。?
  2. 如果是这种情况,我可以为每个线程创建一个连接吗?这会影响性能吗?

我有一个应用程序,其中并发请求数为每秒 50 个。所以我必须处理性能问题。

任何帮助将不胜感激。

【问题讨论】:

    标签: java multithreading jakarta-ee jms websphere


    【解决方案1】:

    JMS 连接(即 QueueConnections 和 TopicConnections)是线程安全的,可以被多个线程使用。 所有 JMS 构造“低于”连接(即 Sessions、QueueSessions、TopicSessions)都不是,应该为每个线程分配一个。

    【讨论】:

    • 由于所有线程使用相同的连接,一个线程的session.send(msg)会影响其他线程吗?即其他线程会等到一个线程完成其发送/接收操作吗?
    • 谢谢。我会尝试做一个负载测试并弄清楚。
    【解决方案2】:

    每个线程应该共享一个QueueConnectionFactory 而不是一个QueueConnection。

    然后线程将从工厂创建自己的 QueueConnection。

    【讨论】:

    • 我有 200 毫秒的时间来发送和接收消息。从 QCF 获取新连接会影响线程的性能吗?
    • 发送和接收是什么意思?你期待什么回来?
    • 我有一个外部系统,它处理请求队列上的消息并在响应队列上发送响应消息。 (我没有使用 MDB)
    猜你喜欢
    • 2014-03-10
    • 1970-01-01
    • 2022-11-10
    • 2017-07-11
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多