骨のダイスを転がそう
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
これでメッセージを取り出せる。おもしろい。
[ツッコミを入れる]