static void Main(string[] args) { var settings = new MqConnectionSettings { QueueManagerName = args[0], ChannelName = args[1], Host = args[2], Port = int.Parse(args[3]), EnableSSL = int.Parse(args[4]) > 0 }; var traceDirectory = MqTracing.GetTraceDirectory(); //traceDirectory.Empty(); try { Console.WriteLine(MqClient.TestConnection(settings)); Console.WriteLine("Press any key to close app..."); } catch (Exception e) { Console.WriteLine($"Error: {e.Message};{e.InnerException?.Message}"); //Thread.Sleep(5000);//white until trace updated //MqTracing.DisplayTrace(traceDirectory); } }
/// <summary> /// Создает экземпляр класса <see cref="RouteInfo"/>. /// </summary> public RouteInfo( string exchange, string exchangeType, IDictionary <string, object> arguments, bool durable, bool autoDelete, string route, int retryCount, string messageName, string messageVersion, MqConnectionSettings connectionSettings, TimeSpan?delay, bool usePublisherConfirms ) { Name = messageName; Exchange = exchange; Durable = durable; AutoDelete = autoDelete; Route = route; RetryCount = retryCount; MessageVersion = messageVersion; ConnectionSettings = connectionSettings; ExchangeType = exchangeType; Arguments = arguments; Delay = delay; UsePublisherConfirms = usePublisherConfirms; }
public static string TestConnection(MqConnectionSettings mqConnectionSettings) { var queueManager = MqManagerFactory.Create(mqConnectionSettings); var response = queueManager.IsConnected ? "Connected Successfully" : "Problem accesing WebSphere MQ"; queueManager.Disconnect(); return(response); }
public static IEnumerable <string> GetAllMessages(MqConnectionSettings mqConnectionSettings, string queueName, bool browse) { string messageContent; var count = 0; do { messageContent = GetMessage(mqConnectionSettings, queueName, browse, count == 0); count++; yield return(messageContent); } while (messageContent != string.Empty); }
public MessageSettings Create(MqConnectionSettings mqConnectionSettings) { return(new MessageSettings( mqConnectionSettings, Name, Version, Route, Arguments, Exchange?.Create(), RetryCount, UsePublisherConfirms )); }
/// <summary> /// Получить свойства клиента. /// </summary> /// <param name="connectionSettings">Настройки подключения.</param> /// <returns>Словарь свойств клиента.</returns> public IDictionary <string, object?> GetClientProperties(MqConnectionSettings connectionSettings) { return(new Dictionary <string, object?> { ["product"] = _serviceInfoAccessor.ServiceInfo.ServiceName, ["version"] = _serviceInfoAccessor.ServiceInfo.ApplicationVersion, ["OS"] = RuntimeInformation.OSDescription + " " + RuntimeInformation.OSArchitecture, ["platform"] = "Process architecture: " + RuntimeInformation.ProcessArchitecture + " " + RuntimeInformation.FrameworkDescription, ["host_name"] = _serviceInfoAccessor.ServiceInfo.HostName, ["username"] = connectionSettings.UserName, }); }
public static MQQueueManager Create(MqConnectionSettings mqConnectionSettings) { var properties = new Hashtable { { MQC.HOST_NAME_PROPERTY, mqConnectionSettings.Host }, { MQC.PORT_PROPERTY, mqConnectionSettings.Port }, { MQC.CHANNEL_PROPERTY, mqConnectionSettings.ChannelName }, { MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED } }; if (mqConnectionSettings.EnableSSL) { SetupSsl(properties); } return(new MQQueueManager(mqConnectionSettings.QueueManagerName, properties)); }
/// <summary> /// Создает новый экземпляр класса <see cref="MessageSettings"/>. /// </summary> /// <param name="connectionSettings">Настройки подключения.</param> /// <param name="name">Наименование сообщения.</param> /// <param name="version"> /// Версия сообщения. /// <para> /// По-умолчанию: 1.0. /// </para> /// </param> /// <param name="route">Роут для публикации.</param> /// <param name="arguments">Аргументы.</param> /// <param name="exchange"> /// Обменник, в который необходимо сообщение опубликовать. /// </param> /// <param name="retryCount"> /// Количество пыток отправки сообщения. /// <para> /// По-умолчанию: 5. /// </para> /// </param> /// <param name="UsePublisherConfirms"> /// Включно ли подтверждение публикаций сообщений брокером. /// </param> public MessageSettings( MqConnectionSettings connectionSettings, string name, string?version = null, string?route = null, IDictionary <string, object>?arguments = null, ExchangeInfo?exchange = null, int?retryCount = null, bool?UsePublisherConfirms = null ) { Name = name ?? throw new ArgumentNullException(nameof(name)); Version = version ?? "1.0"; Route = route ?? string.Empty; // TODO: сделать проверки параметров в зависимости от типа обменника. Arguments = arguments ?? new Dictionary <string, object>(); Exchange = exchange ?? new ExchangeInfo(); RetryCount = retryCount ?? 5; ConnectionSettings = connectionSettings; UsePublisherConfirms = UsePublisherConfirms ?? false; }
public static string GetMessage(MqConnectionSettings mqConnectionSettings, string queueName, bool browse, bool firstMessage = true) { var queueManager = MqManagerFactory.Create(mqConnectionSettings); var mqQueue = GetMqQueue(queueName, browse, queueManager); var messageContent = string.Empty; try { var mqMsg = MqUploader.CreateNewMqMessage(); messageContent = mqQueue.GetMessageContent(mqMsg, browse, firstMessage); mqMsg.ClearMessage(); queueManager.Commit(); } catch (Exception) { queueManager.Disconnect(); mqQueue?.Close(); } return(messageContent); }
public SubscriberSettings Create(MqConnectionSettings mqConnectionSettings) { return(new SubscriberSettings( mqConnectionSettings, SubscriberName, QueueName, (Bindings ?? Enumerable.Empty <ExchangeBindingDto>()).Select(b => b.Create()), Arguments, UseModelTypeAsSuffix, ConsumerName, Durable, Exclusive, AutoDelete, AutoAck, UseDeadLetter, UsePublisherConfirms, TracingSettings?.Create(), RetrySettings?.Create(), ScalingSettings?.Create() )); }
private const int MqEncoding = MQC.CODESET_819; // "iso-8859-1" public static string SendMessage(MqConnectionSettings mqConnectionSettings, string queueName, string message) { var queueManager = MqManagerFactory.Create(mqConnectionSettings); var queue = queueManager.AccessQueue(queueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING); var queueMessage = CreateNewMqMessage(); var queuePutMessageOptions = new MQPutMessageOptions(); AddMessageContent(message, queueMessage); queue.Put(queueMessage, queuePutMessageOptions); queue.Close(); queueManager.Commit(); queueManager.Disconnect(); var msgId = Convert.ToBase64String(queueMessage.MessageId ?? new byte[0]); return(msgId); }
/// <summary> /// Создает экземпляр класса <see cref="SubscriberSettings"/>. /// </summary> /// <param name="subscriberName">Наименование подписчика.</param> /// <param name="queueName">Название очереди.</param> /// <param name="bindings">Подписки очереди на обменники.</param> /// <param name="arguments">Дополнительные аргументы очереди.</param> /// <param name="useModelTypeAsSuffix"> /// Добавлять тип модели в виде суффикса в имя очереди. /// <para> /// По-умолчанию: false. /// </para> /// </param> /// <param name="consumerName"> /// Наименование подписчика в ConsumerTag. /// <para> /// По-умолчанию: наименование секции в конфигурации. /// </para> /// </param> /// <param name="durable"> /// Очередь автоматически восстанавливается при перезапуске брокера сообщений. /// <para> /// По-умолчанию: true. /// </para> /// </param> /// <param name="exclusive"> /// У очереди может быть только один потребитель и она удаляется при закрытии соединения с ним. /// <para> /// По-умолчанию: false. /// </para> /// </param> /// <param name="autoDelete"> /// Очередь автоматически удаляется, если у нее не остается потребителей. /// <para> /// По-умолчанию: false. /// </para> /// </param> /// <param name="autoAck"> /// Авто-подтверждение при потреблении сообщения. /// <para> /// По-умолчанию: false. /// </para> /// </param> /// <param name="useDeadLetter"> /// Использовать отдельную очередь для хранения сообщений при обработке которых возникла ошибка. /// <para> /// По-умолчанию: false. /// </para> /// </param> /// <param name="usePublisherConfirms"> /// Включно ли подтверждение публикаций сообщений брокером. /// </param> /// <param name="tracingSettings">Настройки отслеживания сообщений.</param> /// <param name="retrySettings">Настройки повторной обработки сообщений.</param> /// <param name="scalingSettings">Настройки масштабирования подписчика.</param> /// <param name="connectionSettings">Настройки подключения, используемые данной очередью.</param> public SubscriberSettings( MqConnectionSettings connectionSettings, string?subscriberName, string?queueName, IEnumerable <ExchangeBinding>?bindings = null, IDictionary <string, object>?arguments = null, bool?useModelTypeAsSuffix = null, string?consumerName = null, bool?durable = null, bool?exclusive = null, bool?autoDelete = null, bool?autoAck = null, bool?useDeadLetter = null, bool?usePublisherConfirms = null, TracingSettings?tracingSettings = null, RetrySettings?retrySettings = null, ScalingSettings?scalingSettings = null ) { SubscriberName = subscriberName; QueueName = queueName; Arguments = arguments ?? new Dictionary <string, object>(); UseModelTypeAsSuffix = useModelTypeAsSuffix ?? false; ConsumerName = consumerName; Durable = durable ?? true; Exclusive = exclusive ?? false; AutoDelete = autoDelete ?? false; AutoAck = autoAck ?? false; UseDeadLetter = useDeadLetter ?? false; UsePublisherConfirms = usePublisherConfirms ?? false; TracingSettings = tracingSettings ?? new TracingSettings(); RetrySettings = retrySettings ?? new RetrySettings(); ScalingSettings = scalingSettings ?? new ScalingSettings(); ConnectionSettings = connectionSettings; _bindings = new HashSet <ExchangeBinding>(bindings ?? Enumerable.Empty <ExchangeBinding>()); }
public static string GetMessage(MqConnectionSettings mqConnectionSettings, string queueName, bool browse) { return(MqDownloader.GetMessage(mqConnectionSettings, queueName, browse)); }
public static IEnumerable <string> GetAllMessages(MqConnectionSettings mqConnectionSettings, string queueName, bool browse) { return(MqDownloader.GetAllMessages(mqConnectionSettings, queueName, browse)); }
public static string SendMessage(MqConnectionSettings mqConnectionSettings, string queueName, string messageContent) { return(MqUploader.SendMessage(mqConnectionSettings, queueName, messageContent)); }