gpt4 book ai didi

c# - RabbitMQ 事务在队列关闭时无一异常(exception)地提交

转载 作者:太空宇宙 更新时间:2023-11-03 22:43:18 24 4
gpt4 key购买 nike

我正在尝试通过事务将消息从发布者同步发送到代理,如 here 所述(通过 Tx 保证交付)以确保从发布者到代理的消息交付。

所以我向经纪人发送消息。

        try
{
var factory = new ConnectionFactory() {HostName = "localhost"};
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: routingKey, durable: true, exclusive: false, autoDelete: false, arguments: null);

var properties = channel.CreateBasicProperties();
properties.Persistent = true;

channel.TxSelect();
for (int i = 0; i < 10; i++)
{
channel.BasicPublish("", routingKey, properties, Encoding.UTF8.GetBytes("nop"));
channel.TxCommit();
}
}
}
catch (Exception ex)
{
//handle exception
Console.WriteLine(ex);
}

我期望的是消息将被传送到代理并持久保存到队列中。否则出现问题会出现异常。

但是当我在消息发布时删除队列时没有任何反应。

为什么事务无一异常(exception)地提交?

最佳答案

从引用的代码和文章中,我看不出它会异常落在哪里。

作为异常(exception),您需要 TxSelect 来处理某些内容。但是由于您不会在队列中获得任何新内容,因此也就没有任何工作要做。因此也不异常(exception)。另一方面,我猜 publish 只是给你任务,一个 promise ,根据你的代码似乎只是保持未处理状态。同样 - 也不异常(exception)。

我建议在不创建队列的情况下做同样的事情。很确定也不会有异常(exception)。

希望这对您有所帮助。

关于c# - RabbitMQ 事务在队列关闭时无一异常(exception)地提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51179968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com