我们在 Fuse ESB (7.1.0) 中使用嵌入式 activemq 代理,消费者位于同一位置。
生产者客户端部署在远程 GlassFish 服务器上。它使用 activeMQ 资源适配器(5.6.0)和 spring jms 模板。客户端将消息发布到不同的队列。我希望某些消息(进入给定队列)使用 jms.useAsyncSend=true 而其他消息应该使用默认值。我看到以下选项
1) 我无法在资源适配器 URL 中附加选项“jms.useAsyncSend=true”,因为这将对所有消息强制执行。
2) 连接工厂的 JNDI 查找返回“org.apache.activemq.ra.ActiveMQConnectionFactory”的一个实例。我实际上期待一个 org.apache.activemq.ActiveMQConnectionFactory 的实例,它允许我对相应的 jmsTemplate 使用 setUseAsyncSend()。所以我也不能使用这个选项。
3) 我在 GlassFish 连接器下配置了多个连接工厂(每个队列一个)。我正在尝试将属性“jms.useAsyncSend=true”作为附加属性传递给特定的连接工厂。我希望这仅用于在该特定连接池中创建的连接。现在,完成此操作后,我想验证它是否真的有效。
问题 1) 如果在入站消息中设置了属性“useAsyncSend”,有没有一种方法可以检查消费者端?这是为了验证我在生产者方面所做的事情是否确实有效。请注意,我使用骆驼上下文将消息路由到最终消费者。有没有办法在 come-context 中检查这一点?是否有一个标题或任何与此相对应的东西?
问题 2) 是否有更好的方法在生产者端设置“useAsyncSend”,其中一个资源适配器用于将消息发送到具有不同“useAsyncSend”值的不同队列。
我知道'useAsyncSend'是一个activeMQ特定配置,因此在jmstemplate接口中不可用
感谢您对此的任何帮助。
谢谢