Spring boot 如何使用“连接到多个VPN”;solace jms弹簧靴“;美国石油学会
使用此处提供的说明,我成功地实现了Spring boot应用程序,以连接到单个VPN,并使用/生成来自/到该VPN上队列的消息(非常有用): 但现在我正努力解决以下问题: 根据read me,使用此属性,我们只能指定一个VPN:solace.jms.msgVpn 如何连接到2个不同的VPN,并在每个VPN中消费/生产从/到队列?我们可以在同一个spring boot应用程序中执行此操作吗 任何帮助都将不胜感激Spring boot 如何使用“连接到多个VPN”;solace jms弹簧靴“;美国石油学会,spring-boot,jms,solace,Spring Boot,Jms,Solace,使用此处提供的说明,我成功地实现了Spring boot应用程序,以连接到单个VPN,并使用/生成来自/到该VPN上队列的消息(非常有用): 但现在我正努力解决以下问题: 根据read me,使用此属性,我们只能指定一个VPN:solace.jms.msgVpn 如何连接到2个不同的VPN,并在每个VPN中消费/生产从/到队列?我们可以在同一个spring boot应用程序中执行此操作吗 任何帮助都将不胜感激 另一个问题-我们如何使用这些API回复消息?尽管您当前无法使用solace jms
另一个问题-我们如何使用这些API回复消息?尽管您当前无法使用
solace jms spring boot
一次连接到多个VPN,但您有两个选项:
solace jms spring boot
您不需要显式地确认消息,因为spring jms使用本地事务。如果回调抛出异常,事务将回滚,否则将提交。如果回滚,默认情况下,消息将返回队列并重新传递。这可能会导致你的应用程序进入一个无限循环,试图处理一条坏消息,因此建议在队列上设置属性max redelivery
>0,并指定一个死消息队列,毒药消息将在该队列中超过redelivery限制。默认情况下,DMQ是#DEAD\u MSG\u QUEUE
,您可能需要创建它。请注意,发布消息时还必须将DMQ合格标志设置为true
如果您决定改用SCS绑定器,则确认机制不同,不使用本地事务,而是由SCS管理。有关重试、DMQ(也称为DLQ)以及全局和应用程序级错误处理程序的详细信息,请参阅SCS参考文档。由于SCS提供了类似的功能,您不需要在代理上配置max redelivery或DMQ,消息也不需要设置DMQ合格标志。相反,您需要在应用程序属性/YAML中配置错误处理。通常,当您的应用程序引发异常时,将尝试重新交付,并且在超过交付限制(默认情况下为3次)后,将转到DLQ或在应用程序或全局级别定义的错误处理程序。如前所述,这将取决于您的配置
禁用本地事务的一个示例是。然后可以使用setSessionAcknowledgeMode(Session.CLIENT\u ACKNOWLEDGE)
启用客户端确认。但是,任何异常都可能不会回滚其他操作(例如,如果您在另一个会话上发布回复)。请注意,@JmsListener
注释应指定引用容器工厂的containerFactory
参数
根据
DefaultMessageListenerContainer
的文档,如果要避免消息丢失或非原子操作,最好使用事务。当您的回调成功返回时,事务和客户端确认都将完成。感谢您的回复。我在getDefJmsListenerFactory()方法中使用该解决方法初始化SolConnectionFactory,并手动设置VPN和其他连接属性;setVPN(env.getProperty(“vpn.name”);工厂。设置连接工厂(scf);关于消息确认,您提到Spring使用本地事务。因此,如果我设置factory.SetSessionTransact(false);它还会向路由器确认消息吗?请查看添加的新详细信息,以解决您的问题:无交易。