在运行时更新 jms 入站适配器目标
Update jms inbound adapter destination at runtime
我正在制作一个简单的 spring 集成应用程序,它向可配置的 jms 队列发送消息,并从不同的可配置的 jms 队列接收消息。
我可以使用 "destination-expression" 配置出站 jms 适配器队列,但由于这不适用于入站适配器,我不确定如何执行此操作。
嗯,你有点误解了这个概念。
在<int-jms:outbound-channel-adapter>
中我们可以根据requestMessage
发送到任何目的地。只是因为我们在那里有控制权,而我们在 JMS 之外。
在 <int-jms:inbound-channel-adapter>
上,我们无法 change/dance 使用目标,因为我们的应用程序没有传入上下文。这种适配器是 SI 应用程序的入口点。因此,如果您在运行时更改目的地,您将错过来自先前目的地的消息。
虽然可以,但您可以使用 JmsDestinationPollingSource.setDestination()/setDestinationName()
更改它。
您可以像 [INBOUND_CHANNEL_ADAPTER_ID].source
那样实现引用 bean。
顺便说一句,您无法在 JMS 中收听一个消费者的多个目的地。所以,你真的被迫在你的应用程序中有几个入站适配器。
我正在制作一个简单的 spring 集成应用程序,它向可配置的 jms 队列发送消息,并从不同的可配置的 jms 队列接收消息。
我可以使用 "destination-expression" 配置出站 jms 适配器队列,但由于这不适用于入站适配器,我不确定如何执行此操作。
嗯,你有点误解了这个概念。
在<int-jms:outbound-channel-adapter>
中我们可以根据requestMessage
发送到任何目的地。只是因为我们在那里有控制权,而我们在 JMS 之外。
在 <int-jms:inbound-channel-adapter>
上,我们无法 change/dance 使用目标,因为我们的应用程序没有传入上下文。这种适配器是 SI 应用程序的入口点。因此,如果您在运行时更改目的地,您将错过来自先前目的地的消息。
虽然可以,但您可以使用 JmsDestinationPollingSource.setDestination()/setDestinationName()
更改它。
您可以像 [INBOUND_CHANNEL_ADAPTER_ID].source
那样实现引用 bean。
顺便说一句,您无法在 JMS 中收听一个消费者的多个目的地。所以,你真的被迫在你的应用程序中有几个入站适配器。