骨のダイスを転がそう
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
これでメッセージを取り出せる。おもしろい。
[ツッコミを入れる]
2010-01-13
_ [graphviz] subgraph のstyle を指定するには?
サンプルでは、subgraph が味気ない四角だったので何とかならんか、と思っていたところ、以下のような方法で cluster0 の角が丸くなるらしい。
digraph G {
compound=true;
subgraph cluster0 {
style=rounded;
a -> b;
a -> c;
b -> d;
c -> d;
}
subgraph cluster1 {
e -> g;
e -> f;
}
b -> f [lhead=cluster1];
d -> e;
c -> g [ltail=cluster0,lhead=cluster1];
c -> e [ltail=cluster0];
d -> h;
}
CSS のクラスみたいに、ノードをグループ化して属性を設定するには、
{
node [.....];
"a";
"b";
}
{
node [.....];
"c";
"d";
}
とかやるみたい。カスケードはできるのか?
[ツッコミを入れる]