一个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

posted on 2006-09-29 13:00  杨发达  阅读(278)  评论(0编辑  收藏  举报