一个flow 需要发mail 的功能, 公司已经有了一个发mail 的webserive .
此webservice 只能发送 email 正文, 不能发送附件, 具体实现的方案:
Email -> save to database
other windows service -> send mail .
由于database 可以存储mail 的发送状态, 我们可以 实现email 发送失败时的重新发送.
现在可怜的时, 我们的database 有问题, 很多人随便修改数据库,致使服务经常不能用.
现在考虑新的方案取代原来的做法:
1 : 启用新的数据库( Access / msdb ) 作为 mail database .
2: Msmq 用来作为mail database .
3: 加强管理力度.
比较起来, msmq 更好些( 需要建新的数据库实例, 很多人有问题).
下面说一下如何coding .
Msmq 的安装很简单. 编码也很简单.
下面的代码用来得到msmq 的 所有的queue 及其所有的message , 并放到treeview .
Dim queue As MessageQueue
TreeView1.Nodes.Clear()
TreeView1.BeginUpdate()
Dim allprivatequeus() As MessageQueue = MessageQueue.GetPrivateQueuesByMachine("localhost")
For Each queue In allprivatequeus
Dim qNode As New TreeNode()
qNode.Text = queue.QueueName
qNode.Tag = "Queue"
TreeView1.Nodes.Add(qNode)
Dim m As Message
For Each m In queue
Dim mNode As New TreeNode()
mNode.Tag = "Message"
mNode.Text = m.Label
TreeView1.Nodes(Array.IndexOf(allprivatequeus, queue)).Nodes.Add(mNode)
Next
Next
TreeView1.EndUpdate()
send 的方法:
Dim queue As New MessageQueue()
queue.Path = ".\" & TreeView1.SelectedNode.Text
queue.Send("", "")
receive 的方法:
Dim msg As Message
Dim queue As New MessageQueue()
msg = queue.Receive(New TimeSpan(1000))
you can find the sourcecode in here