CSDN博客

img shanhe

MSMQ的VB操作代码/步骤(简化版)

发表于2004/6/30 23:36:00  3267人阅读

分类: VB

MSMQ的VB操作代码/步骤

1、安装MSMQ,获得Microsoft Message Queue 2.0 Objtec Libary
 在VB中添加类型库引用
2、声明需要用到的变量
 Dim msgqueue As MSMQQueue       '--队列
 Dim queryObj As MSMQQuery       '--查询
 Dim queueInfo As MSMQQueueInfo  '--队列信息
 Dim msg As MSMQMessage
3、创建(私有队列,本机上的)
 Set queueInfo = New MSMQQueueInfo
 queueInfo.PathName = "./Private$/in"
 queueInfo.Label = "InQueue"
 queueInfo.Create  '--创建队列

4、发送消息(假设消息队列已经创建)
 Set queueInfo = New MSMQQueueInfo
 queueInfo.PathName = "./Private$/in"
 ' queueInfo.Label = "InQueue"
 Set msgqueue = queueInfo.Open(MQACCESS.MQ_SEND_ACCESS, MQSHARE.MQ_DENY_NONE)
 If (msgqueue.IsOpen()) Then
     Set msg = New MSMQMessage
     msg.Label = "hi"
     msg.Body = "This is a msg test" '--可以是任何变量,只要支持Idispatch接口和持续化接口
     msg.Send msgqueue
     msgqueue.Close
     Debug.Print "Sended!"
  End If
5、主动接受消息(注意这是一个阻塞操作)
 Set queueInfo = New MSMQQueueInfo
  queueInfo.PathName = "./Private$/in"
 ' queueInfo.Label = "InQueue"
  Set msgqueue = queueInfo.Open(MQACCESS.MQ_RECEIVE_ACCESS, MQSHARE.MQ_DENY_NONE)
  If (msgqueue.IsOpen()) Then
      Set msg = msgqueue.Receive
     Debug.Print "recvied!" & msg.Body
  End If
6、也可以采用MSMQ事件来进行消息通告

Dim WithEvents evt As MSMQEvent

Dim queueInfo As MSMQQueueInfo
Dim q As MSMQQueue
Dim msg As MSMQMessage
Private Sub Form_Load()
  Set queueInfo = New MSMQQueueInfo
  queueInfo.PathName = "./Private$/in"
  'queueInfo.Label = "InQueue"
  Set q = queueInfo.Open(MQACCESS.MQ_RECEIVE_ACCESS, MQSHARE.MQ_DENY_NONE)
  Set evt = New MSMQEvent
  q.EnableNotification evt
End Sub

Private Sub evt_Arrived(ByVal q As Object, ByVal cursor As Long)
'  Dim b As Boolean
  Dim theq As MSMQQueue
  Set theq = q
  Set msg = theq.Receive()
 
  Debug.Print msg.Label + " body:" + msg.Body
 
  theq.EnableNotification evt
End Sub

注意其中的 Dim WithEvents evt As MSMQEvent 语句

7、意义
可以异种程序的跨进程消息交换,甚至vb程序同.net程序的交互
如果配置成企业MSMQ,可以构成分布消息处理系统,对于大型应用很有利

 

 

0 0

相关博文

我的热门文章

img
取 消
img