扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
public Sub client() Dim tM As New System.Messaging.MessageQueue() tM.Path = ".\Private$\jk" '"FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"'与指定计算机中的消息队列建立连接, Dim newMessage As New System.Messaging.Message(TextBox1.Text)'接受文本筐的t-sql语句 newMessage.Label = "This is the label"'消息名字, tM.Send(newMessage)'发送消息 End Sub |
服务端程序:
public Sub server() Dim NewQueue As New System.Messaging.MessageQueue(".\Private$\jk")'"FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"'与指定计算机中的消息队列建立连接, Dim m As System.Messaging.Message '查看消息队列中的消息 m = NewQueue.Receive m.Formatter = New System.Messaging.XmlMessageFormatter(New String() {"System.String,mscorlib"}) Dim st As String st = m.Body'消息队列中消息的消息内容。既sql语句 Dim con As New OleDb.OleDbConnection("输入自己的数据库连接字符串") con.Open() Dim com As New OleDb.OleDbCommand(st, con)'执行消息中的sql语句 com.ExecuteNonQuery() con.Close() End Sub |
我为什么要使用消息队列来处理数据库的操作这个问题我一直没回答,现在我就来回答这个问题。在本程序中你会发现在sub client()中我并没连接数据库和请求数据,而是通过发消息来操作数据库的,这个好处是节省了两部分时间:
1、对数据库连解请求数据的时间。
2、从数据库返回数据的时间。
在很多情况下其实我们并不需要看见具体的数据就知道该怎么修改数据库中的数据。例如要删除张三的记录,就可以将一条简单的删除语句放入消息中,发给服务器让服务器程序去处理对数据的更改。
此外消息队列的另一个主要用途也就是当前erp软件中必不可少的,就是在断开连接时保存信息,当连接恢复时发送消息。消息在如下两种情况中无法迅速地传递到它们的队列:当队列驻留的计算机无法工作时,或当路由消息所需的域控制器无法工作时。"消息队列"可让您应对这些情况,使得在从网络上断开连接或必要的计算机或控制器无法工作时,仍可以继续发送消息。在这些情形下,消息暂时存储在本地计算机或传递路由上的某个计算机的队列中,直到完成传递所需的资源重新联机。
例如,假设有一个记录所有在出差的销售人员发送的订单的中央队列。这些销售人员每天的大部分时间都以断开连接的方式工作,记录来自客户站点的订单信息,并且每天拨号连接一次,将所有这些信息传输到中央队列中。因为消息在发送方断开连接时仍可发送到队列,所以销售人员可以在记录客户信息时立即发送他们的消息,但系统会缓存这些消息直到晚间进行拨号连接为止。
在断开连接时要怎么保存消息呢?向断开连接的队列发送消息同向可用队列发送消息的过程几乎完全相同。当要向其发送的队列不可用时,不必进行任何特殊的配置以使组件将消息存储在临时队列中。在client代码的tM.Path = ".\Private$\jk"后面有一条注释语句,其实这条语句就是实现向断开连接的队列发送消息的功能。只要将tM.Path = ".\Private$\jk"这条语句换成tM.Path = "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75"其中PUBLIC后面的数字是要发送到计算机的guid数字。这个数字可以打开那台计算机的消息队列的属性看见。使用这种方法就可以在断开连接的情况下保证对服务器的操作是有效。现在运行这个程序后,打开win2000中的"开始"-》"程序"-》"管理工具"-》"计算机管理"。在"计算机管理"窗口中展开"服务和应用程序"-》"消息队列"-》"传出队列",你将在右边的窗口中看见你建立的消息。(如果你使用tM.Path = ".\Private$\jk"语句,在"计算机管理"窗口中展开"服务和应用程序"-》"消息队列"-》"专用队列"可以看见你建立的队列。)
其实消息队列的编程并不复杂,但它在网络环境的程序开发中是非常有用的,可以简化大量的开发过程和节省开发时间。
其实消息队列的编程有很大的灵活性,几乎可以解决网络编程的大部分问题。比如聊天程序,远程控制程序。
本文针对消息队列做了一个简单的介绍,并举了一个例来说明怎么在.net下使用消息编程,达到快速高效稳定的对数据库进行操作。最后补充要说的是在internet中也一样可以使用消息队列,只需要将tM.Path = "FORMATNAME:PUBLIC=3d3dc813-c555-4fd3-8ce0-79d5b45e0d75语句后面的数字变成消息队列所在服务器的数字就可以了。但是要提醒大家的是使用消息在传输时将占有大量的带宽,所以在不是必须的时候,internet下的编程不要使用消息。
在vb.net、win2000 、sql server 2000下通过。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者