Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring';时侦听器容器的id是什么;什么是JMS名称空间?_Java_Spring_Spring Integration_Spring Jms - Fatal编程技术网

Java 使用Spring';时侦听器容器的id是什么;什么是JMS名称空间?

Java 使用Spring';时侦听器容器的id是什么;什么是JMS名称空间?,java,spring,spring-integration,spring-jms,Java,Spring,Spring Integration,Spring Jms,根据JMS名称空间标记的属性(即),元素没有id属性 如果侦听器容器bean没有id,如何从其他bean定义中引用它 例如,假设已定义以下侦听器容器: <jms:listener-container acknowledge="auto" connection-factory="queueConnectionFactoryBean" container-type="default" destination-resolver="jndiDestinationResolv

根据JMS名称空间标记的属性(即
),元素没有
id
属性

如果侦听器容器bean没有
id
,如何从其他bean定义中引用它

例如,假设已定义以下侦听器容器:

<jms:listener-container acknowledge="auto"
    connection-factory="queueConnectionFactoryBean"
    container-type="default"
    destination-resolver="jndiDestinationResolver"
    destination-type="queue"
    message-converter="myConverter">

    <jms:listener ref="myListenerPOJO" id="myQueueListener"
        method="processThePOJO" destination="${myQueueListener.queue.jndiName}" />

</jms:listener-container>

还是我误解了侦听器容器和网关之间的关系?

侦听器容器元素不用于配置独立的JMS侦听器容器。它是用来作为所有封闭的
listener
标记的蓝图。在运行时,实际发生的是为每个封闭的
侦听器构建一个JMS侦听器容器。因此,不是单个容器而是多个容器

正如@artembilan提到的,容器的id被设置为侦听器的id。然而,当您将侦听器重新用于spring集成时,它将使侦听器变得无用。侦听器容器只能连接一个MessageListener,不能连接多个MessageListener


如果您想为Spring集成网关使用侦听器容器,您必须使用
*MessageListenerContainer
类之一自行构建一个侦听器容器。

侦听器容器
元素并不用于配置独立的JMS侦听器容器。它是用来作为所有封闭的
listener
标记的蓝图。在运行时,实际发生的是为每个封闭的
侦听器构建一个JMS侦听器容器。因此,不是单个容器而是多个容器

正如@artembilan提到的,容器的id被设置为侦听器的id。然而,当您将侦听器重新用于spring集成时,它将使侦听器变得无用。侦听器容器只能连接一个MessageListener,不能连接多个MessageListener


如果您想为Spring集成网关使用侦听器容器,您必须使用
*MessageListenerContainer
类之一自己构建一个侦听器容器。

正如Marten所说,
侦听器容器为每个
侦听器
子元素使用
MessageListenerContainer
bean。目标
MessageListenerContainer
从侦听器的
id
获取
id
,这有什么神奇之处呢


因此,在您的例子中,
容器
应该应用值myQueueListener

,正如Marten所说,
侦听器容器
为每个
侦听器
子元素生成
MessageListenerContainer
bean。目标
MessageListenerContainer
从侦听器的
id
获取
id
,这有什么神奇之处呢


因此,在您的情况下,
容器
应该应用值myQueueListener

,谢谢您将其清除。我想如果你能在@Artem Bilan中加入关于容器id=侦听器id的内容,我可以将其标记为答案。谢谢你,这就澄清了问题。我想如果你可以在@Artem Bilan中添加关于容器id=侦听器id的位,我可以将其标记为答案。尽管你可以尝试,但这会禁用侦听器(至少应该是这样)。MessageListenerContainer只能为一个监听器服务,不能为多个监听器服务。下面是一段源代码,它是如何实现的:尽管您可以尝试这样做,但这将禁用监听器(至少它应该这样做)。MessageListenerContainer只能服务于一个侦听器,而不能服务于多个侦听器。以下是它的源代码:
<int-jms:inbound-gateway 
    request-channel="inboundChannel"
    id="messageChannelAdapter"
    container="**What Goes Here?**"
    reply-channel="outboundChannel" />