当前位置: 首页 > 知识库问答 >
问题:

如何/何时删除RabbitMQ.NET客户端中的队列

姬昀
2023-03-14

使用.NET rabbitmq客户端(https://www.rabbitmq.com/dotnet.html)。创建了一个库,其他项目可以引用该库在总线上订阅/取消订阅/发布消息

根据这里和这里提供的信息,为了让每个订户接收所有消息,每个客户端需要为每个订户定义一个不同的队列,绑定到交换机。我遇到的问题是如何在“客户端”应用程序使用队列完成后删除队列(因为这将以指数级增长,而且永远不会被清理掉)。

public interface IEventBus
{
    void Publish(DomainEvent @event);

    void Subscribe<TH, T>()
        where TH : IEventHandler<T> where T : DomainEvent;

    void Unsubscribe<TH, T>()
        where TH : IEventHandler<T> where T : DomainEvent;
}

public class EventBus : IEventBus, IDisposable
{
    ....//implementation
    // dispose connection/channel etc
var bus = serviceProvider.GetService<IEventBus>();
bus.Subscribe<CancelEventHandler, CancelEvent>();
...
bus.Publish(....);

共有1个答案

鲁才艺
2023-03-14

您正在查找独占/自动删除队列。根据定义,这样的队列只能由创建它的客户端访问--当客户端断开连接时,队列立即被删除。对于设置使用者订阅主题,并且实际上不需要消息在服务器上排队的情况,这些都很有用。

 类似资料:
  • 之后,我尝试从其他应用程序使用者那里使用该消息。这没有问题。 我的应用程序使用者是用Spring Boot构建的,如下所示: 顺便说一句,最初的队列是在应用程序生成器将消息发送到ActiveMQ Artemis时创建的,并使用完成,如下所示:

  • 这就是事情。 我正在使用PHP AMQP从Rabbitmq读取结果队列,以便处理发送的每封电子邮件上的重要信息。完成后,我需要将该消息删除或标记为已写入,以便下次读取队列时,不会得到已处理的消息。 由于Rabbitmq服务器每小时发送超过10.000封电子邮件,每次我读取队列以处理结果发送时,脚本至少可以运行5分钟,以便处理队列中的所有消息,因此在完成后,在这5分钟内会发送数百条新消息。这使得我无

  • type String - clientCertificate. origin String - 必须从缓存中删除相关客户端证书的服务器的来源。

  • 我的问题是关于删除Oracle中的用户。我收到一个错误,请尝试Oracle sqlplus和开发人员。 oracle sql开发人员: OracleSQL开发人员中的连接 错误:从命令的第13行开始的错误:删除用户HELLO CASCADE错误报告-ORA-00604:错误发生在递归级别1SQLORA-00942:表或视图不存在00604. 00000-”错误发生在递归SQL级别%s"*原因:处理

  • 莴苣支持这种开箱即用的群集/分片吗?如果是,如何将其配置为使用客户端散列?

  • 数据库中的DATE字段具有以下格式: 我想从日期中删除时间并返回如下日期: