骨のダイスを転がそう
2010-01-12
_ [ msmq ] メッセージキューを VBS から動かしてみる。
メッセージキューイングを試してみたくなった。
Const MQ_RECEIVE_ACCESS = 1
Const MQ_SEND_ACCESS = 2
Const MQ_PEEK_ACCESS = 32
Const MQ_ADMIN_ACCESS = 128
Const MQ_DENY_NONE = 0
Const MQ_DENY_RECEIVE_SHARE = 1
Dim objQueueInfo
Set objQueueInfo = CreateObject("MSMQ.MSMQQueueInfo")
Dim objMessage
Set objMessage = CreateObject("MSMQ.MSMQMessage")
objQueueInfo.PathName = ".\private$\input"
Dim objDest
Set objDest = objQueueInfo.Open(MQ_SEND_ACCESS ,MQ_DENY_NONE)
If objDest.IsOpen = 1 Then
objMessage.Priority = 4
objMessage.Label = "msg" & date & time
objMessage.Body = "メッセージボディ"
objMessage.Send objDest, 3
End If
objDest.Close
Set objDest = Nothing
Set objMessage = Nothing
Set objQueueInfo = Nothing
って、http://blogs.technet.com/junichia/archive/2008/06/27/idm-msmq-3-msmq.aspx で紹介されているサンプルスクリプトそのままだけど、Windows Server 2008 環境ということで、手元の WinXP では動かない。 objMessage.Send objDest の後に、3 が必要だった。Send メソッドのデフォルト値が変わったのか?
Const MQ_RECEIVE_ACCESS = 1
Const MQ_SEND_ACCESS = 2
Const MQ_PEEK_ACCESS = 32
Const MQ_ADMIN_ACCESS = 128
Const MQ_DENY_NONE = 0
Const MQ_DENY_RECEIVE_SHARE = 1
Set objQueueInfo_Input = CreateObject("MSMQ.MSMQQueueInfo")
Set objMsgQueue_Src = CreateObject("MSMQ.MSMQQueue")
Set objMessage = CreateObject("MSMQ.MSMQMessage")
Set objManagement = CreateObject("MSMQ.MSMQManagement")
objManagement.Init "" ,".\private$\Input"
objQueueInfo_Input.Formatname = "DIRECT=OS:tca6006\private$\Input"
Set objMsgQueue_Src = objQueueInfo_Input.Open(MQ_Receive_ACCESS ,MQ_DENY_NONE)
If objManagement.MessageCount > 0 then
wscript.echo objManagement.MessageCount & " 件のメッセージがあります"
Set objMessage = objMsgQueue_Src.Receive()
Wscript.Echo "本文:" & objMessage.Body
Else
Wscript.echo "メッセージがありません"
End If
これでメッセージを取り出せる。おもしろい。
[ツッコミを入れる]