예제 #1
0
        void CreateWorker()
        {
            if (worker != null)
            {
                worker.Dispose();
            }
            int?port = null;

            if (!string.IsNullOrWhiteSpace(tbPort.Text))
            {
                port = int.Parse(tbPort.Text);
            }
            worker = new MQWorker(tbServerName.Text, port, tbVirtualHost.Text, tbUserName.Text, tbPassword.Text);
        }
예제 #2
0
        // See Recipe 13.2 in the ElevatedPrivilegeActions assembly
        #endregion

        #region "13.3 List what processes an assembly is loaded in"
        // See Shared.TestAssemblyInProcesses();
        #endregion

        #region "13.4 Using Message Queues on a local workstation"
        public static void TestMessageQueue()
        {
            // NOTE: Message Queue services must be set up for this to work
            // This can be added in Add/Remove Windows Components
            try
            {
                using (MQWorker mqw = new MQWorker(@".\private$\MQWorkerQ")) // workstation syntax
                //using (MQWorker mqw = new MQWorker(@".\MQWorkerQ")) // server syntax
                {
                    string xml = "<MyXml><InnerXml location=\"inside\"/></MyXml>";
                    Console.WriteLine("Sending message to message queue: " + xml);
                    mqw.SendMessage("Label for message", xml);
                    string retXml = mqw.ReadMessage();
                    Console.WriteLine("Read message from message queue: " + retXml);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.ToString());
            }
        }
예제 #3
0
        private void btStartStop_Click(object sender, EventArgs e)
        {
            var toStart = btStartStop.Text == btStartStopTextToStart ? true : false;

            btStartStop.Text = toStart ? btStartStopTextToStop : btStartStopTextToStart;
            int?port = null;

            if (!string.IsNullOrWhiteSpace(tbPort.Text))
            {
                port = int.Parse(tbPort.Text);
            }
            try
            {
                if (worker != null)
                {
                    worker.MessageReceivedEvent -= Worker_MessageReceivedEvent;
                }
                if (toStart)
                {
                    worker = new MQWorker(tbServerName.Text, port, tbVirtualHost.Text, tbUserName.Text, tbPassword.Text);
                    worker.MessageReceivedEvent += Worker_MessageReceivedEvent;
                    worker.StartRecievingMessages(cbQueue.Text, cbUseTempQueue.Checked);
                    SetResult($"{DateTime.Now.ToString("HH:mm:ss")}. Запущено получение сообщений", false);
                }
                else
                {
                    worker.StopReceivingMessages();
                    worker.Dispose();
                    worker = null;
                    SetResult($"{DateTime.Now.ToString("HH:mm:ss")}. Остановлено получение сообщений", false);
                }
            }
            catch (Exception ex)
            {
                SetResult(ex.Message, true);
            }
        }
예제 #4
0
        async Task GetServerConfig()
        {
            var taskGetExchanges = await MQWorker.GetMQObjectsListAsync <MQExchange>(PathGetExchanges, AdminUserName, AdminPassword);

            dgExchanges.DataSource = taskGetExchanges;
            var taskGetQueues = await MQWorker.GetMQObjectsListAsync <MQQueue>(PathGetQueues, AdminUserName, AdminPassword);

            dgQueues.DataSource = taskGetQueues;
            var taskGetBindings = await MQWorker.GetMQObjectsListAsync <MQBinding>(PathGetBindigns, AdminUserName, AdminPassword);

            dgBindings.DataSource = taskGetBindings;

            cbExchanges.DataSource    = taskGetExchanges;
            cbExchanges.DisplayMember = "Name";

            cbQueues.DataSource    = taskGetQueues;
            cbQueues.DisplayMember = "Name";

            cbQueue.DataSource    = taskGetQueues;
            cbQueue.DisplayMember = "Name";

            cbExchange.DataSource    = taskGetExchanges;
            cbExchange.DisplayMember = "Name";
        }
예제 #5
0
        private async void dgContextMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            try
            {
                var item = e.ClickedItem;
                if (item.Text == "Удалить")
                {
                    var gridName = ((sender as ContextMenuStrip).SourceControl as DataGridView).Name;
                    switch (gridName)
                    {
                    case "dgExchanges":
                        var exchangeName = dgExchanges.SelectedRows[0].Cells[0].Value.ToString();
                        var vHost        = dgExchanges.SelectedRows[0].Cells[1].Value.ToString().Replace("/", "%2f");
                        if (MessageBox.Show(null, $"Удалить exchange {exchangeName}?", "Подтверждение удаления",
                                            MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            var result = await MQWorker.DeleteMQObject($"{PathGetExchanges}/{vHost}/{exchangeName}", AdminUserName, AdminPassword);

                            MessageBox.Show(result);
                            await GetServerConfig();
                        }
                        break;

                    case "dgQueues":
                        var queueName = dgQueues.SelectedRows[0].Cells[0].Value.ToString();
                        vHost = dgQueues.SelectedRows[0].Cells[1].Value.ToString().Replace("/", "%2f");
                        if (MessageBox.Show(null, $"Удалить queue {queueName}?", "Подтверждение удаления",
                                            MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            var result = await MQWorker.DeleteMQObject($"{PathGetQueues}/{vHost}/{queueName}", AdminUserName, AdminPassword);

                            MessageBox.Show(result);
                            await GetServerConfig();
                        }
                        break;

                    case "dgBindings":
                        exchangeName = dgBindings.SelectedRows[0].Cells[0].Value.ToString();
                        vHost        = dgBindings.SelectedRows[0].Cells[1].Value.ToString().Replace("/", "%2f");
                        queueName    = dgBindings.SelectedRows[0].Cells[2].Value.ToString();
                        var routingKey = dgBindings.SelectedRows[0].Cells[4].Value.ToString();
                        if (MessageBox.Show(null, $"Удалить binding {exchangeName}/{queueName} с routingKey {routingKey}?", "Подтверждение удаления",
                                            MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                        {
                            if (string.IsNullOrWhiteSpace(routingKey))
                            {
                                routingKey = "~";
                            }
                            if (string.IsNullOrWhiteSpace(exchangeName))
                            {
                                exchangeName = "~";
                            }
                            var result = await MQWorker.DeleteMQObject($"{PathGetBindigns}/{vHost}/e/{exchangeName}/q/{queueName}/{routingKey}", AdminUserName, AdminPassword);

                            MessageBox.Show(result);
                            await GetServerConfig();
                        }
                        break;
                    }
                }
            }
            catch (Exception ex)  { }
        }