MSMQ的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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值