1

RabbitMQ から切断し、EasyNetQ を使用して再接続する必要がある状況にあります。ドキュメントに記載されているように、IBus を破棄することでこれを行っています。

https://github.com/EasyNetQ/EasyNetQ/wiki/connecting-to-rabbitmq

「接続を閉じるには、単にバスを破棄します...これにより、EasyNetQ が使用する接続、チャネル、コンシューマー、およびその他すべてのリソースが閉じられます。」

ただし、新しいバスを作成するために呼び出しを行うと、まだ切断されて破棄されていると表示されます。

bus = RabbitHutch.CreateBus(connString);
bus.Dispose();
resolver.EasyNetQKernel.Release(bus);
bus = RabbitHutch.CreateBus(connString);
bus.Receive<Command>("CommandQueue"), Process);

この時点でコンシューマをリセットしようとすると、「バスが破棄されました」というメッセージとともに EasyNetQException が発生します。

バスを処分した後、バスを再作成できないのはなぜですか?

4

1 に答える 1

0

Ninject を使用したことはありませんが、バス インスタンスの代わりに Ninject コンテナー全体を破棄して再作成してみてください。あなたのコンテナは、すでに破棄されている古い参照を保持している可能性があると思います。

于 2016-11-03T21:46:25.317 に答える