private void Form1_Load(object sender, EventArgs e) { _connString = SystemSettingBase.CreateInstance().SysMySqlDB.ConnString; ConnString.MySqldb = _connString; string url = "tcp://localhost:61616"; string User = ""; string Pwd = ""; helper = new ActiveMQHelper(url, User, Pwd); helper.CreateFactory(); }
public void ReceiveData(object newclient) { TcpClient client = newclient as TcpClient; // 一个接入的对象 if (client == null) { return; } while (true) { if (!client.Connected || (client.Client.Poll(20, SelectMode.SelectRead) && client.Available == 0)) { LogWriter.Info($"来自 {client.Client.RemoteEndPoint} 的连接断开"); client.Close(); return; } //在接收数据时,如果可读字节流是 0 ,则跳过 if (client.Available < 1) { continue; } //因为有包粘连,所以一次尽可能读取长的字节 //而非读取一部分,其它留在缓冲区 byte[] buffer = new byte[client.Available]; try { var stream = client.GetStream(); var read = new BinaryReader(stream); buffer = read.ReadBytes(buffer.Length); ActiveMQHelper.InsertMQ(buffer); //插入MQ var clientsync = new ClientSync(); clientsync.ClientsOnline(buffer, stream); // 响应上线 } catch (SocketException ex) { // 当对方主动断开链接时,ReadBytes 会报错,此时断开链接 LogWriter.Info($"来自 {client.Client.RemoteEndPoint} 的连接断开"); LogWriter.Error(ex.ToString()); client.Close(); return; } catch (Exception ex) { LogWriter.Error("发生未知错误 : "); LogWriter.Error(ex.ToString()); client.Close(); return; } } }
static void Main(string[] args) { Console.WriteLine("命令:"); Console.WriteLine("1. cancel 用户1 用户2 "); Console.WriteLine("2. exit "); Console.WriteLine("3. >内容 "); Console.WriteLine("请输入发送的消息内容:"); while (true) { string textMsg = Console.ReadLine(); if (textMsg.StartsWith(">")) { ActiveMQHelper.SendTopicMessage(new AQConfig() { ActiveMQName = "testaq" }, textMsg.TrimStart('>')); } else { string[] strArr = textMsg.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); switch (strArr[0].ToLower()) { case "exit": break; case "cancel": if (strArr.Length > 1) { for (int i = 1; i < strArr.Length; i++) { ActiveMQHelper.CancelSubscriberTopic(strArr[i], (m) => { Console.WriteLine(m.custom + "已取消订阅"); }); } } break; default: break; } } } Console.ReadLine(); }
static void Main(string[] args) { int userCount = 0; while (userCount < 10) { string strUser = "******" + new Random().Next(1, 30); ActiveMQHelper.SubscriberTopic(new AQConfig() { ActiveMQName = "testaq" }, strUser, (m) => { var msg = ((ITextMessage)m.IMessage); Console.WriteLine(m.custom + "Receive: " + msg.Text); }); Console.WriteLine("用户: " + strUser + "订阅"); Thread.Sleep(5 * 1000); } Console.ReadLine(); }