Java 在Mule 1.3中线程是如何工作的?

Java 在Mule 1.3中线程是如何工作的?,java,multithreading,tcp,mule,Java,Multithreading,Tcp,Mule,我有一个tcp端点,它向java组件发送消息,java组件调用db中的存储过程,并对结果进行一些处理,然后将结果返回给同一个tcp。 我知道每个tcp请求都会在它自己的线程中,但是如果消息来自同一个连接,这是否意味着我只有一个线程,我需要配置mule使java组件成为多线程的。 我唯一发现的是: 我无法理解:在Mule 3中,消息接收者(即入站端点)通常有一个专用的工作管理器,其线程池分配给并行处理请求(JMS连接器除外,其作用稍有不同) 因此,在您的情况下,TCP入站端点在默认情况下将分配16

我有一个tcp端点,它向java组件发送消息,java组件调用db中的存储过程,并对结果进行一些处理,然后将结果返回给同一个tcp。 我知道每个tcp请求都会在它自己的线程中,但是如果消息来自同一个连接,这是否意味着我只有一个线程,我需要配置mule使java组件成为多线程的。 我唯一发现的是:
我无法理解:在Mule 3中,消息接收者(即入站端点)通常有一个专用的工作管理器,其线程池分配给并行处理请求(JMS连接器除外,其作用稍有不同)

因此,在您的情况下,TCP入站端点在默认情况下将分配16个线程来处理命中单个打开的TCP套接字的传入请求

不需要使用池组件


编辑:问题是关于Mule 1.3的,它非常古老,有一个非常不同的线程模型。在这种情况下,每个端点都有一个不同的线程池。

在Mule 3中,您在问题中链接了它的文档,消息接收者(即入站端点)通常有一个专用的工作管理器,其中有一个线程池分配给并行处理请求(JMS连接器除外,其作用稍有不同)

因此,在您的情况下,TCP入站端点在默认情况下将分配16个线程来处理命中单个打开的TCP套接字的传入请求

不需要使用池组件


编辑:问题是关于Mule 1.3的,它非常古老,有一个非常不同的线程模型。在这种情况下,每个端点都有一个不同的线程池。

好的,我正在尝试池组件,但我不确定这是否会为java组件的每个新消息创建一个新线程好的,我正在尝试池组件,但我不确定这是否会为java组件的每个新消息创建一个新线程您可以清除workmanager,请给我留言器和连接器好吗?例如,如果我有1个连接器,和2个与此连接器相关的不同消息接收器,我将有多少个工作管理器?一个连接器有3个工作管理器:一个用于接收器,一个用于分派器,一个用于请求者。如果有一个连接器有两个端点,那么这两个端点将共享同一个工作管理器,即同一个线程池。不过,我也希望相同连接器有两个不同的端点,而此端点的接收器有不同的工作管理器。这可能与我的配置有关,但我如何更改它。顺便说一下,我说的是Mule1.3版本。Mule1.3已经7年了,你可能是指3.3.1?我不明白两个入站端点如何拥有不同的工作管理器:
AbstractMessageReceiver.getWorkManager()
调用
connector.GetReceiveWorkManager()
,即它们共享公共连接器提供的同一个工作管理器。我真正的意思是1.3,在我的公司有这个旧版本。当我看代码时,我看到AbstractMessageReceiver构造函数中有这样的代码。workManager=this.connector.createReceiverWorkManager(endpoint.getName());我想这在旧版本中是不同的。不同端点的Messagereceivers具有来自连接器的相同线程配置文件,但具有不同的线程池。请澄清workmanager、Messagereceivers和连接器之间的关系?例如,如果我有1个连接器,和2个与此连接器相关的不同消息接收器,我将有多少个工作管理器?一个连接器有3个工作管理器:一个用于接收器,一个用于分派器,一个用于请求者。如果有一个连接器有两个端点,那么这两个端点将共享同一个工作管理器,即同一个线程池。不过,我也希望相同连接器有两个不同的端点,而此端点的接收器有不同的工作管理器。这可能与我的配置有关,但我如何更改它。顺便说一下,我说的是Mule1.3版本。Mule1.3已经7年了,你可能是指3.3.1?我不明白两个入站端点如何拥有不同的工作管理器:
AbstractMessageReceiver.getWorkManager()
调用
connector.GetReceiveWorkManager()
,即它们共享公共连接器提供的同一个工作管理器。我真正的意思是1.3,在我的公司有这个旧版本。当我看代码时,我看到AbstractMessageReceiver构造函数中有这样的代码。workManager=this.connector.createReceiverWorkManager(endpoint.getName());我想这在旧版本中是不同的。不同端点上的Messagereceivers具有来自连接器的相同线程配置文件,但线程池不同。