/// <summary> /// Конвертирует настройки публикации сообщения в заголовки сообщения. /// </summary> /// <param name="requestOptions">Настройки публикации сообщения.</param> /// <returns>Заголовки сообщения.</returns> private IDictionary <string, object> ApplyOptions(RequestOptions requestOptions) { IDictionary <string, object> headers = this.ApplyOptions(requestOptions as PublishingOptions); Maybe <TimeSpan?> timeout = BusOptions.Pick(requestOptions.Timeout, this.Configuration.Options.GetRequestTimeout()); if (timeout != null && timeout.HasValue) { headers[Headers.Timeout] = timeout.Value; } return(headers); }
/// <summary> /// Конвертирует настройки публикации сообщения в заголовки сообщения. /// </summary> /// <param name="options">Настройки публикации сообщения.</param> /// <returns>Заголовки сообщения.</returns> private IDictionary <string, object> ApplyOptions(PublishingOptions options) { var storage = this.Configuration.Options.GetIncomingMessageHeaderStorage().Value; var inputHeaders = storage.Load() ?? new Dictionary <string, object>(); var outputHeaders = new Dictionary <string, object>(inputHeaders); Headers.ApplyBreadcrumbs(outputHeaders, this.endpoint.Address); Headers.ApplyOriginalMessageId(outputHeaders); Maybe <bool> persist = BusOptions.Pick(options.Persistently, this.Configuration.Options.IsPersistently()); Headers.ApplyPersistently(outputHeaders, persist); Maybe <TimeSpan?> ttl = BusOptions.Pick(options.Ttl, this.Configuration.Options.GetTtl()); Headers.ApplyTtl(outputHeaders, ttl); return(outputHeaders); }
/// <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); }