【问题标题】:Multithreading in JMSJMS 中的多线程
【发布时间】:2018-03-29 10:26:01
【问题描述】:

我需要编写一个多线程 JMS 生产者和一个多线程 JMS 消费者;我对使用 JMS 比较陌生,而且我以前从未使用过多线程。我在 API 中看到,您可以使用生产者的完成侦听器和消费者的消息侦听器异步发送和接收消息。这是否意味着使用完成侦听器和消息侦听器会导致程序成为多线程?如果不是,您如何编写多线程生产者和多线程消费者?

【问题讨论】:

  • 异步和多线程是两个不同的东西,它们都可以实现并发。而且我认为并发是您要寻找的
  • 关于 JMS 多线程的好讨论 stackoverflow.com/questions/25832159/… Oracle 的另一个 JMS 设计文档 docs.oracle.com/cd/E11035_01/wls100/jms/…
  • 您正在编写 Java EE 应用程序,对吗?在使用应用程序服务器设置的 Java EE 中,您可以为消息驱动 Bean 设置多个实例,这些实例将使用 JMS 队列中传入的消息,因此您无需在代码中为消费者部分手动处理线程:应用程序服务器将自行处理,您只需在 MDB onMessage 方法的主体上编写线程安全代码。对于生产者部分,我认为您需要自己处理线程......

标签: java multithreading asynchronous jms synchronous


【解决方案1】:

避免多线程 JMS 规范指出,对会话、生产者、消费者或消息方法进行多线程处理会导致未定义的行为,除非调用 close()。对于此版本,如果 WebLogic JMS 确定您创建了多线程生产者,则服务器实例将引发 JMSException。如果您的应用程序受线程限制,请尝试增加生产者和会话的数量。

【讨论】:

    猜你喜欢
    • 2012-06-12
    • 2011-05-02
    • 1970-01-01
    • 2014-11-08
    • 2016-04-05
    • 2017-07-17
    • 2012-08-09
    • 1970-01-01
    • 2013-01-14
    相关资源
    最近更新 更多