簡體   English   中英

如何/何時刪除 RabbitMQ .net 客戶端中的隊列

[英]How / When to remove queues in RabbitMQ .net Client

Working with .net rabbitmq client ( https://www.rabbitmq.com/dotnet.html ). 創建了一個庫,其他項目可以引用該庫以在總線上訂閱/取消訂閱/發布消息。

根據此處此處提供的信息,為了讓每個訂閱者接收所有消息,每個客戶端需要為每個訂閱者定義一個不同的隊列,綁定到交換。 我遇到的問題是如何在“客戶端”應用程序使用隊列完成后刪除隊列(因為這會成倍增長並且永遠不會被清理)。

它會在 Dispose 方法中嗎? 最好的方法是什么?

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(....);

您正在尋找獨占/自動刪除隊列。 根據定義,這樣的隊列只能由創建它的客戶端訪問 - 當客戶端斷開連接時,隊列會立即刪除。 這些對於您設置消費者來訂閱主題的情況很有用,並且您實際上不需要在服務器上排隊消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM