Вопрос к RawRabbit: отправляет различные сообщения автономно - PullRequest
0 голосов
/ 04 июня 2019

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

где я не прав? что я должен установить?

var config = new RawRabbitConfiguration()
                {
                    Username = username,
                    Password = password,
                    VirtualHost = "/",
                    Hostnames = new List<string>() { hostname },
                    AutoCloseConnection = false,
                    //Ssl = new SslOption() {  Enabled = true },
                    Port = port,
                    Exchange = new GeneralExchangeConfiguration
                    {
                        AutoDelete = false,
                        Durable = true,
                        Type = RawRabbit.Configuration.Exchange.ExchangeType.Direct
                    },
                    Queue = new GeneralQueueConfiguration
                    {
                        Exclusive = false,
                        AutoDelete = false,
                        Durable = true
                    }
                };

var options = new RawRabbitOptions() { ClientConfiguration = config };
client = RawRabbitFactory.CreateSingleton(options);

client.SubscribeAsync<MessageModel>(async msg =>
                {
                    return await Task.Run(() => MessageReceived(msg));
                },
                ctx => ctx.UseSubscribeConfiguration(
                    cfg => cfg.FromDeclaredQueue(
                        queue => queue.WithName(queueName))))
                        .GetAwaiter();



ОБНОВЛЕНИЕ : функция отправки, которую я использую ...

        public void SendMessage(MessageModel message, string machineName = null, string exchangeName = null)
        {
            if (!string.IsNullOrEmpty(machineName))
                message.MachineName = machineName;
            else if (string.IsNullOrEmpty(message.MachineName))
                message.MachineName = this.MachineName;

            if (!string.IsNullOrEmpty(LastMessageReceived?.ID))
                message.RequestID = LastMessageReceived.ID;
            else
                message.RequestID = string.Empty;

            if (!string.IsNullOrEmpty(LastMessageReceived?.MachineName))
                message.MachineNameDest = LastMessageReceived.MachineName;
            else if (string.IsNullOrEmpty(message.MachineNameDest))
                message.MachineNameDest = string.Empty;

            try
            {
                if (string.IsNullOrEmpty(exchangeName))
                    client.PublishAsync<MessageModel>(message);
                else
                    client.PublishAsync<MessageModel>(message,
                        ctx => ctx.UsePublishConfiguration(
                            cfg => cfg.OnExchange(exchangeName)));
            }
            catch (Exception ex)
            {
                OnError?.Invoke(this, ex);
            }

            LastMessageReceived = null;
        }


EDIT:

В каком случае генерируется ошибка «На этапе инициализации не зарегистрированы дополнительные промежуточные программы»?

Я не могу понять, почему эта ошибка генерируется на «SubscribeAsync» и после не отправляет сообщения. (

Пожалуйста, помогите мне.

...