如何使用 AMQPNetLite 使用 .NET 客户端应用程序设置PRE_ACKNOWLEDGE模式



我们正在使用使用AMQPNetLite库的.NET客户端连接到ActiveMQ Artemis。我需要设置预确认模式,并从文档中了解到,这可以broker.xml文件中的connector进行设置。但是,这样做没有任何区别。从文档中不太清楚如何设置此模式。

您引用的文档适用于使用本机"核心"协议的ActiveMQ Artemis客户端。它不适用于AMQPNetLite客户端。该客户端是在自己的独立项目中开发的,该项目有自己的文档。

此外,就其价值而言,该文档没有描述在broker.xml中配置预确认。它讨论了在客户端jndi.properties或通过 JMS API 以编程方式配置它。无法在代理上配置预确认。

我建议您看一下"pressetled"模式,这是一个AMQP语义,本质上应该等同于ActiveMQ Artemis中的预确认。

就 AMQP 客户端而言,预确认模式的想法相当于创建 AMQP 接收器链接,其中包含附加到SETTLED帧中的snd-settle-mode,以便通知远程应该发送已结算的接收方交付,表明客户端不需要使用已解决的处置本身做出响应,因为遥控器已经表示它已经忘记了交付。

由于这与AMQPNetLite有关,您将创建一个ReceiverLink,并为其提供一个自定义的附加对象,其中包含您想要的结算模式配置,该对象如下所示,尽管您需要根据需要进行测试和调整。

Attach attach = new Attach();
attach.SndSettleMode = SndSettleMode.SETTLED;
attach.RcvSettleMode = RcvSettleMode.FIRST;
ReceiverLink receiver = new ReceiverLink(session, address, attach, onAttached);          

有关链路建立和附加选项的信息可以在 AMQP 1.0 规范中找到。

相关内容

  • 没有找到相关文章

最新更新