Я бы построил ваш синглтон, такой как он имеет шаблон наблюдателя, и содержал бы там все содержимое RabbitMQ со ссылками на ваших абонентов. Затем вам также необходимо выполнить маршаллизацию вызовов для одного потока, который имеет дело с этим, или вы можете рисковать проблемами с объектами канала.

у простой класс, который мои приложения будут использовать для отправки и получения сообщений с использованием RabbitMQ. Я прочитал столько How-Tos, постов в блогах, официальных документов и тому подобного о RabbitMQ, сколько смог найти. В большинстве примеров показано использование соединения и канала, заключенных в блок using, и противоречат им, говоря, что вы, вероятно, должны реализовать их как одиночный. Что касается канала, я видел комментарии о том, что у вас не должно быть более одного потока, использующего один канал одновременно.

Я пишу свою библиотеку в C #. это одноэлементное устройство со статическим соединением, подключенным в первом экземпляре.

Я думал сделать то же самое для канала, но я намерен использовать одну и ту же библиотеку, чтобы разрешить публикацию / подписку на несколько обменов / очередей. Как публикация, так и подписка могут выполняться из нескольких потоков.

И, наконец, мой вопрос: как мне создать канал? За сообщение? Есть ли у каждого потребителя уникальный частный канал, издатель синхронизирует доступ к одному уникальному каналу? Вы ловите мой дрейф. Пожалуйста, имейте в виду, что я собираюсь использовать один сервер с несколькими десятками потребителей / издателей, не намного больше.

Спасибо!