编程语言
首页 > 编程语言> > java – 消息传递(例如JMS)何时是多线程的替代方案?

java – 消息传递(例如JMS)何时是多线程的替代方案?

作者:互联网

我在一个数据处理应用程序上工作,通过在消息驱动bean(MDB)的多个实例监听的消息队列上放置几个工作单元来实现并发.除了以这种方式实现并发之外,我们没有任何具体的理由使用消息传递基础结构和MDB.

这让我想到为什么使用多线程无法实现同样的目标.

所以我的问题是,在什么情况下异步消息传递(例如JMS)可以用作替代mutithreading作为实现并发的手段?使用一种方法比另一种方法有什么优点/缺点.

解决方法:

它不能用作多线程的替代方法,它是一种实现多线程的方法.这里有三种基本的解决方案:

>你负责队列的两端;
>您负责发送数据;要么
>您负责接收数据.

接收数据在这里是踢球者,因为没有某种形式的多线程/多处理,实际上没有办法做到这一点,否则你一次只能处理一个请求.在没有多线程的情况下发送数据更加可行,但是你只是将处理这些消息的责任推到了外部系统.所以它不是多线程的替代品.

在您使用消息驱动Bean的情况下,容器正在为您创建和管理线程,因此它不是多线程的替代方案,您只是使用其他人的实现.

标签:java,multithreading,jms,jboss-mdb,message-passing
来源: https://codeday.me/bug/20191006/1862837.html