/// <summary> /// Конвертирует настройки публикации сообщения в заголовки сообщения. /// </summary> /// <param name="options">Настройки публикации сообщения.</param> /// <returns>Заголовки сообщения.</returns> private IDictionary <string, object> ApplyOptions(PublishingOptions options) { var storage = this.Configuration.Options.GetIncomingMessageHeaderStorage().Value; var headers = storage.Load() ?? new Dictionary <string, object>(); if (!headers.ContainsKey(Headers.Breadcrumbs)) { headers[Headers.Breadcrumbs] = this.endpoint.Address; } else { headers[Headers.Breadcrumbs] = Headers.GetString(headers, Headers.Breadcrumbs) + this.breadCrumbsTail; } if (!headers.ContainsKey(Headers.OriginalMessageId)) { headers[Headers.OriginalMessageId] = Guid.NewGuid().ToString("n"); } Logger.Trace(m => m("Идентификатор первого сообщения [{0}].", Headers.GetString(headers, Headers.OriginalMessageId))); Maybe <bool> persist = BusOptions.Pick(options.Persistently, this.Configuration.Options.IsPersistently()); if (persist != null && persist.HasValue) { headers[Headers.Persist] = persist.Value; } Maybe <TimeSpan?> ttl = BusOptions.Pick(options.Ttl, this.Configuration.Options.GetTtl()); if (ttl != null && ttl.HasValue) { headers[Headers.Ttl] = ttl.Value; } return(headers); }
/// <summary> /// Отправляет одностороннее сообщение. /// </summary> /// <param name="label">Метка отправляемого сообщения.</param> /// <param name="payload">Тело сообщения.</param> /// <param name="options">Заголовки сообщения.</param> /// <returns>Задача выполнения отправки сообщения.</returns> public Task Send(MessageLabel label, object payload, PublishingOptions options) { return(this.Send(label, payload, this.ApplyOptions(options))); }
public Task Send(object payload, PublishingOptions options) { return(this.Send(payload, this.ApplyOptions(options))); }