Я разрабатываю очень простое приложение, используя RabbitMQ.Одна машина, несколько очередей и обменов, один издатель и один потребитель.После прочтения о Clustering и HA я подключаю второй компьютер для создания кластера, кроме того, я отражаю очереди, чтобы иметь хотя бы одну реплику.Теперь, когда я хочу опубликовать некоторые данные в очереди, я использую первую машину в качестве своего хоста, и она работает нормально, но если служба RabbitMQ первой машины не работает, мое приложение не работает.
У меня вопрос, как узнать, какая машина настроена для создания соединения и как изменить хост при публикации сообщений?
ОБНОВЛЕНИЕ
Я использую одну из CreateConnection
перегрузокпередать все мои хосты для создания соединения.ОК, это решит проблему поиска доступной машины для создания соединения.Но второй вопрос все еще там, посмотрите на код ниже:
for(int i = 0, i < 300, i++){
var message = string.Format("Message #{0}: {1}", i, Guid.NewGuid());
var messageBodyTypes = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(ExchangeName, "123456", null, messageBodyBytes);
}
Эти строки кода работают идеально, когда соединение в порядке, но предположим, что в середине публикации сообщений наобмен, служба неожиданно остановилась, затем в этом случае сначала System.IO.FileLoadException
поднял и если я продолжу выполнение RabbitMQ.Client.Exceptions.AlreadyClosedException
поднял, что говорит:
Уже закрыт: операция AMQP была прервана: AMQP закрыть-причина, инициированная Peer, code = 320, text = "CONNECTION_FORCED - принудительное закрытие соединения брокером с причиной 'shutdown'", classId = 0, methidId = 0, причина =
Я думаю, что долженбыть способом изменить хост, когда соединение закрыто во время публикации сообщений, но как, не IDEA!